ACCESS フォームのコントロール名を変数で指定する方法

ACCESSのフォーム上にあるコントロール(テキストボックスなど)をVBAで指定する際は、フォーム名!コントロール名という形で指定できます。
一方で、この指定を変数で行いたい場合はどのように記述すればよいでしょうか。
今回は、フォームのコントロール名を変数で指定する方法をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。
コントロール名の変数指定
フォームのコントロールを変数で指定するためには、以下の記述方法を用います。
フォーム名を指定した上で、フォームのControlsプロパティを指定して名称を()内に記述します。
コントロール名のみ変数指定
[Forms]![フォーム名].Controls(コントロール名の変数)
フォーム名は固定で記載した上で、コントロール名を変数で指定します。
変数は文字列型にしておく必要がある点に注意してください。
フォーム名もコントロール名も変数指定
Forms(フォーム名の変数).Controls(コントロール名の変数)
コントロール名だけでなく、フォーム名も変数で指定する場合はForms(フォーム名)のフォーム名の部分に変数を利用します。
詳しくは以下の記事を参照ください。

フォームのコントロール名を変数で指定するサンプルコード
では、実際にVBAでフォームのコントロール名を変数で指定するプロシージャを作成してみます。
Private Sub 入力_ボタン_Click()
Dim cnn As ADODB.Connection
Dim rst1 As ADODB.Recordset
Dim rst2 As ADODB.Recordset
Dim i As Long
'変数にADOオブジェクトを代入
Set cnn = CurrentProject.Connection
Set rst1 = New ADODB.Recordset
rst1.CursorLocation = adUseClient
'レコードセットを取得
rst1.Open "MST_設定", cnn, adOpenKeyset, adLockOptimistic
Do Until rst1.EOF
'フォームに入力
Forms("T_Control").Controls(rst1!コントロール名) = "1"
rst1.MoveNext
Loop
End Sub
上記のプロシージャは、MST_設定テーブルにコントロール名を格納しておき、指定したコントロールに値を入力していくというものです。
入力するフォームは以下の通りで、入力ボタンのクリック時イベントに上記のイベントプロシージャを設定してあります。

準備したMST_設定テーブルは以下の通りです。

実行するとMST設定テーブルに登録されたコントロールにだけ、「1」が入力されます。

このように、コントロール名を変数で指定する際はループ処理などで複数のコントロールに順次値を入れていくシーンが多いでしょう。
以上、フォームのコントロール名を変数で指定する方法をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に200以上のACCESSデータベースの開発・修正実績のあるはこにわガジェット(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

最後までお読みいただき、ありがとうございました。