ACCESS2003で開発しています。
ひとつのフォーム(Form1)にサブフォームを10個(SubForm01からSubForm10まで)配置しており、そのフォーム内のボタンで1つのサブフォームを切り替え表示するようにしています。
サブフォーム部分だけがページ遷移しているように見えるような感じのことしたいので、こんな面倒なことをやっています。
各サブフォームの処理は全く一緒なのですが、サブフォームが10個もある為に同じ処理をForm1に10まとまり書かないといけないので、サブフォームの名前を変数にできないかなと考えていますがやり方がわかりません。
下記ソースで色々試してみたのですが、だめでした。
具体的にはサブフォーム(SubForm01~SubForm10まで)のテキストボックス(txtBox1~txtBox30)に順に値を入れたいということです。
教えてください。
Dim strPageCnt As String 'サブフォームの番号
'(処理省略)ここでstrPageCntに01から10までのいずれかの値を放り込んでいます。
For i = 1 To rs.RecordCount 'レコードセット最大値までループ
'↓ここでサブフォーム名を変数に入れる
strSubForm = frmLOT31010_SubForm & strPageCnt
'↓この方法もだめ
Forms!Form1!strSubForm!txtBox(i).Value = rs("NO").Value
'↓この方法もだめ
Forms!Form1!SubForm("strPageCnt")!txtBox(i).Value = rs("NO").Value
'↓これもだめ
Forms!Form1!SubForm(strPageCnt)!txtBox(i).Enable = False
'↓これもだめ
Forms!Form1!SubForm(strPageCnt)!txtBox(i + 1).SetFocus
next
どのようにすればサブフォームの名前を変数に入れて、なおかつサブフォーム名を可変にし(ここで言うところのサブフォームの最後の数値を変えて)サブフォームが扱えるようになりますか?
教えてください。よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
やりたい事が良くわかりませんが
strSubForm = frmLOT31010_SubForm & strPageCnt
のfrmLOT31010_SubFormって何?サブフォームの名前?
サブフォーム(SubForm01~SubForm10まで)と書かれていますが
名前をSubForm・・とされているなら
For Ix1 = 1 To 10
Controls("SubForm" & Format(Ix1,"00")).Form.TxtBox1.Text = "XXX"
Next
でアクセスできるのでは
また、サブフォーム内のテキストも名前を順に取っているのなら
Controls("SubForm" & Format(Ix1,"00")).Form.Controls("TxtBox" & Format(Ix2,"00")).Text
でアクセスできると思います。
文字とコントロールの文字列結合は出来ません
コントロール名とするなら.Nameと書くべきだし擬似的にコントロールを配列化したいなら名前を連番にしてControls("SubForm" & Format(Ix1,"00"))として扱う方法がベターです
frmLOT31010_SubFormとは実際使っているサブフォームです。
置き換えたつもりだったのですが・・・
noah7150のさんに教えていただいた方法でテキストボックスの参照についてはできました。ありがとうございました。
あともうひとつ。
サブフォーム自体を変数に入れたいのです。
やりたいことは、サブフォームをVisible = false です。
どのようにしたらよいでしょうか??
Forms("SubForm" & Format(Ix1,"00")).Visible = False
のようにしたのですがだめでした。サブフォームだから無理なのはわかっていたのですが、やり方がわかりませんでした。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- Excel(エクセル) Excel VBAについてです。 少しだけ知識はあるのですが、 うまくいかなかったので 質問させてい 3 2022/09/13 18:40
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- その他(プログラミング・Web制作) google formsで回答者をスプレッドシートに記載する方法 1 2023/06/23 11:22
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
Access サブフォームでの選択行の取得
その他(データベース)
-
サブフォームに変数を代入し、RecordSourceの値を取得したい
Access(アクセス)
-
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
-
4
レコード削除時に(サブ)フォームに表示される#Deleted"について"
Access(アクセス)
-
5
ACCESS──メインフォームでサブフォームのレコード件数をカウントしたい
Access(アクセス)
-
6
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
7
Accessのサブフォームから値を参照する方法について
その他(データベース)
-
8
AccessVBA RecordSourceのリセットについて
Access(アクセス)
-
9
フォーム上の全てのコントロールを取得したい
Access(アクセス)
-
10
全てのサブフォーム名を取得したい
Excel(エクセル)
-
11
親フォームからサブフォームのレコードソースを設定
Access(アクセス)
-
12
現在アクティブなタブのページ名を取得したい
Access(アクセス)
-
13
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
14
ACCESSでデータ読み取り専用を解除する方法
その他(データベース)
-
15
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
16
ADOを使ったDBアクセス後のメモリ解放
その他(データベース)
-
17
選択クエリで実行結果を非表示にできますか?
その他(データベース)
-
18
【Access】サブフォームのソースオブジェクトを入れ替えたい
Access(アクセス)
-
19
アクセスVBAのMe!と[ ]
Access(アクセス)
-
20
Accessの画面更新を一時的に停止する方法。
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サブフォームの新規レコードに...
-
アクセスVBA フォームのス...
-
ACCESS フォーム、クエリの最前...
-
VB.net(VB)で、フォームにExcel...
-
VBA リストボックスをダブルク...
-
Accessのトグルボタンでサブフ...
-
Accessでフォームから別フォー...
-
メッセージボックスの背景色
-
VB.NET 親フォームから子フォー...
-
Dominoデザイナーにて、四捨五...
-
Access サブフォームに連番を...
-
フォームで複数のチェックボッ...
-
VBAにてメッセージボックスを最...
-
End とUnload の違い
-
同一のフォームを複数開いて
-
データシートビューからフォー...
-
アクセス フォームが存在する...
-
PDFフォームに本日の日付を自動...
-
アクセス・別フォームの新規レ...
-
ワードで雛形の作成
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAにてメッセージボックスを最...
-
VB.net(VB)で、フォームにExcel...
-
Accessでフォームから別フォー...
-
リストボックスの選択解除
-
Googleフォーム・複数人の申し...
-
ユーザーフォーム上にアイコン...
-
アクセスVBA フォームのス...
-
VBプログラムの終了
-
アクセス フォームが存在する...
-
サブフォームの新規レコードに...
-
PDFフォームに本日の日付を自動...
-
サブフォームの行ごとにコンボ...
-
accessで2つ以上のフォームを起...
-
メッセージボックスの背景色
-
PDFフォーム内で日付計算したい...
-
VBA リストボックスをダブルク...
-
Access 無操作の場合、自動で閉...
-
ディスプレイ解像度より大きな...
-
フォーム上の全てのコントロー...
-
ToolStripStatusLabelを固定し...
おすすめ情報