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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
Access サブフォームでの選択行の取得
その他(データベース)
-
サブフォームに変数を代入し、RecordSourceの値を取得したい
Access(アクセス)
-
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
-
4
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
5
Accessのサブフォームから値を参照する方法について
その他(データベース)
-
6
アクセスVBAのMe!と[ ]
Access(アクセス)
-
7
AccessVBA RecordSourceのリセットについて
Access(アクセス)
-
8
親フォームからサブフォームのレコードソースを設定
Access(アクセス)
-
9
全てのサブフォーム名を取得したい
Excel(エクセル)
-
10
ACCESS──メインフォームでサブフォームのレコード件数をカウントしたい
Access(アクセス)
-
11
選択クエリで実行結果を非表示にできますか?
その他(データベース)
-
12
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
13
【Access】サブフォームのソースオブジェクトを入れ替えたい
Access(アクセス)
-
14
ADOを使ったDBアクセス後のメモリ解放
その他(データベース)
-
15
フォームウィンドウを最前面に表示したい(ACCESS)
Microsoft ASP
-
16
ACCESSのフォーム、開くんですが、見えないようにするには
Access(アクセス)
-
17
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
18
フォーム上の全てのコントロールを取得したい
Access(アクセス)
-
19
accessで2つ以上のフォームを起動時に表示する方法
Access(アクセス)
-
20
Access2010、値を入力したら自動保存の方法
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスVBA フォームのス...
-
Accessでフォームから別フォー...
-
サブフォームの新規レコードに...
-
フォーム上の全てのコントロー...
-
PDFフォームに本日の日付を自動...
-
VB.net(VB)で、フォームにExcel...
-
Googleフォーム・複数人の申し...
-
accessで2つ以上のフォームを起...
-
VBAでフォームのスクロールバー...
-
C# 別なフォームへ値を渡す (...
-
サブフォームの行ごとにコンボ...
-
VBAにてメッセージボックスを最...
-
VBのEXEファイルのサイズを小さ...
-
リストボックスをクリックする...
-
ExcelVBAでユーザーフォーム内...
-
フォームを1つだけ閉じる方法は?
-
アクセス フォームが存在する...
-
リストボックスの選択解除
-
タブコントロールを含んだフォ...
-
Access:ストアドプロシージャ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAにてメッセージボックスを最...
-
Accessでフォームから別フォー...
-
サブフォームの新規レコードに...
-
リストボックスの選択解除
-
Googleフォーム・複数人の申し...
-
ユーザーフォーム上にアイコン...
-
PDFフォームに本日の日付を自動...
-
accessで2つ以上のフォームを起...
-
VBプログラムの終了
-
アクセスVBA フォームのス...
-
メッセージボックスの背景色
-
サブフォームの行ごとにコンボ...
-
ExcelVBAでフォーム内でブック...
-
フォーム上の全てのコントロー...
-
ディスプレイ解像度より大きな...
-
メインフォームからサブフォー...
-
VBAでフォームのスクロールバー...
-
PDFフォーム内で日付計算したい...
-
Access 無操作の場合、自動で閉...
-
C# 別なフォームへ値を渡す (...
おすすめ情報