【Access】文字列型変数でフォームやコントロールを指定する方法とは?

このQ&Aのポイント
  • Accessのフォームやコントロールを文字列型変数で指定する方法について解説します。
  • フォーム「frm01」とテキストボックス「tb01」がある場合、文字列型変数を使用してフォームやコントロールを指定する方法を示します。
  • 文字列型変数を使用する際には、ドット(.)を使用してフィールドへのアクセスを明示する必要があります。
回答を見る
  • ベストアンサー

【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには

バージョン:Access2002 フォーム「frm01」にテキストボックス「tb01」が作ってある場合、 Forms.frm01.tb01.Value="あいう" とすれば、フォームもコントロールも指定できるのですが、 Dim strTxt As String strTxt = "tb01" Forms.frm01.strTxt.Value="あいう" だと、文字列型変数"strTxt"が展開されないのでフォーム「frm01」のコントロール「strTxt」を探してしまいエラーになってしまいます。 文字列型変数でフォームやコントロールを指定するには、どのようにすればよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

フォームの場合  Forms(strFrm) フォームのコントロールの場合  Forms(strFrm).Controls(strTxt) これでも参照できますが、普通ここまで省略しませんね。  Forms(strFrm)(strTxt) あとで見たとき、訳がわからなくなりそう。

mojaco
質問者

お礼

ご回答ありがとうございました。 Formsメソッド、Controlsメソッドの引数に変数を指定すればいいのですね。大変勉強になりました。

関連するQ&A

  • accessVBAでフォームのコントロール名に変数を入れたいのですが・・・

    フォームのコントロールを指定する際に変数を利用したいと考えております。 具体的には dim area,pub,age,name as string area = "tokyo" pub = "調布" age = "29"  '入力しもらった値 name = "田中" '入力しもらった値 Forms(area).Controls(city) = Forms(age).Controls(name)  上記の例は適当に指定しましたが 何がしりたいかというと「Forms(area).Controls(city)」この表現が うまく指定されません。 Controlsには変数は指定できないのでしょうか? 指定できるのであれば何か原因はあるのでしょうか? 逆に指定できないのであれば、いい方法を教えてください。

  • 文字列を変数名として扱う方法

    vb6.0 か vb.net で文字列を変数名として扱うにはどうすればいいでしょうか? 例をあげると下記のようなことです。 -------------------- dim abc as string dim x as string abc = "テスト" x = "b" msgbox "a" & x & "c" -------------------- これをそのままvb6.0で実行すると"abc"という文字が表示されますが "abc"ではなく"テスト"と表示させたいのです。 つまり msgbox abc とした場合と同じようにしたいのですが可能でしょうか? ご存知の方教えてください。 よろしくお願いします。

  • エクセル フォーム上の全てのコントロールを取得した

    エクセル フォーム上の全てのコントロールを取得したい http://okwave.jp/qa/q4879853.html のNo.1さんの回答を参考に、 Sub try() Dim i As Integer Dim StrFormName As String StrFormName = "フォーム1" For i = 0 To Forms(StrFormName).Controls.Count - 1 Debug.Print Forms(StrFormName).Controls.Item(i).Name Next End Sub を作ったのですが、 「Forms」の部分が、 「Sub、Function、または Property が定義されていません。(Error 35)」 というコンパイルエラーになってしまいます。 上記のコードをアクセスVBAにつけると、全てのコントロール名が取得できます。 同じようにエクセルで使うにはどこを修正すればいいでしょうか? フォーム名は、変数に入れて使いたいです。

  • 変数にフォームからの入力値は入るのですが。

    変数にフォームからの入力値は入るのですが。 VBA初心者です。下記コードを書きました。 フォームからの入力値をレポート印刷しようとしています。 MSGBOXで内容を参照したところ、変数の内容は入っています。 入っているのですが、レポート上、項目が#Errorになってしまいます。 どこが悪いのでしょうか?。 お分かりになる方でおみえならご教授下さい。 Option Explicit '共通変数の宣言 Dim stdocname As String Dim repo As Report Dim delt As String Dim kmsg As String        :        :        : Private Sub 印刷_Click() On Error GoTo Err_印刷_Click '*** 変数の宣言 Dim tuki As String Dim mais As Integer Dim denp As Integer Dim busu As Integer Dim joge As String Dim kmsg As String '*** 変数に入力値をセット mais = 0 delt = Forms!メイン画面![リストDELTUKI] joge = Forms!メイン画面![リストJYOGEDAN] tuki = Forms!メイン画面![リストTUKI] denp = Forms!メイン画面![テキストSBAN] busu = Forms!メイン画面![テキストEBAN] '*** 消し月と印刷月重複不可チェック If delt = tuki Then GoTo Err_印刷月_Click End If '*** 上段・下段使用と対象月から使用レポートを判定 Select Case joge & tuki Case "上段" & "1" stdocname = "レポート01上" Case "上段" & "2" stdocname = "レポート02上" Case "上段" & "3" stdocname = "レポート03上"        :        :        : Case "下段" & "10" stdocname = "レポート10下" Case "下段" & "11" stdocname = "レポート11下" Case "下段" & "12" stdocname = "レポート12下" Case Else stdocname = "レポート原稿" End Select kmsg = MsgBox(joge & tuki & stdocname)

  • 変数と文字列からオブジェクト名を指定する

    obj=document.forms[2].elements[3]; のような式の右辺を変数と文字列を使って指定することはできないでしょうか? 間違っていますが、イメージとしては obj = "doucment." + variable1 + ".elements[" + num1 + "]"; みたいな感じなんですけど、こんなことは無理ですよね? 可変変数のような感じで扱いたいのですが。。 何か良い方法はないでしょうか?

  • 変数にフォームからの入力値が入らない。

    変数にフォームからの入力値が入らない。 VBA初心者です。下記コードを書きました。 フォームからの入力値をレポート印刷しようとしています。 MSGBOXで内容を参照したところ、JOGEしか入っていませんでした。 どこが悪いのでしょうか?。 お分かりになる方でおみえならご教授下さい。 Option Explicit '共通変数の宣言 Dim stdocname As String Dim repo As Report Dim delt As String Dim kmsg As String        :        :        : Private Sub 印刷_Click() On Error GoTo Err_印刷_Click '*** 変数の宣言 Dim tuki As String Dim mais As Integer Dim denp As Integer Dim busu As Integer Dim joge As String Dim kmsg As String '*** 変数に入力値をセット mais = 0 delt = Forms!メイン画面![リストDELTUKI] joge = Forms!メイン画面![リストJYOGEDAN] tuki = Forms!メイン画面![リストTUKI] denp = Forms!メイン画面![テキストSBAN] busu = Forms!メイン画面![テキストEBAN] '*** 消し月と印刷月重複不可チェック If delt = tuki Then GoTo Err_印刷月_Click End If '*** 上段・下段使用と対象月から使用レポートを判定 Select Case joge & tuki Case "上段" & "1" stdocname = "レポート01上" Case "上段" & "2" stdocname = "レポート02上" Case "上段" & "3" stdocname = "レポート03上"        :        :        : Case "下段" & "10" stdocname = "レポート10下" Case "下段" & "11" stdocname = "レポート11下" Case "下段" & "12" stdocname = "レポート12下" Case Else stdocname = "レポート原稿" End Select kmsg = MsgBox(joge, tuki, stdocname)

  • Accessでフィールド名を変数(文字列)で・・・

    以下のようなテーブルがあります ID  回答1  回答2 1   A    D 2   C    A 3   B    B VBAで回答1と回答2のデータを得ようとした場合 Me!回答1 とするのですがこれを変数(文字列で)行う場合どうしたらよいでしょうか? イメージとしては以下のようにしたいのですが・・ Dim str as String str = "回答1" Me!str

  • 文字列型の一般的な変数名は?

    おはようございます。 サンプルコードで 数値型の変数名は Dim i As Long のようにiをよく見かけます。 ただ、私が勉強不足のため 文字列型の変数名の一般的な文字に何が使われているのかわかりません。 (str?moji?など?) サンプルコードを書くときに使用する 文字列型の変数名を教えてください!

  • フォーム上のコントロールの名前を配列に格納したい

    アクセスです フォーム上のコントロールの名前を配列に格納したいのですが もっとスマートな方法はありますか? 私が考えたコードは Dim avarContorol As Variant Dim ctl As Control Dim mystr As String For Each ctl In Forms(Me.Name).Controls mystr = mystr & ctl.Name & "," Next ctl '右から1文字消す mystr = Left(mystr, Len(mystr) - 1) avarContorol = Split(mystr, ",") なのですが、 ループのみで格納できる方法があれば教えてください。

  • テキスト名を変数に入れる

    フォームでテキストに値を入れるモジュールを作成しています。 テキスト名を変数に入れ値を入れる方法を教えてください。 txtZ という名前のテキストに "A" という値を入るとすると... 通常であれば、 Forms!フォーム名!txtZ.Text = "A" と、するところ Dim strText as String strText = txtZ Forms!フォーム名!strText.Text = "A" という感じで、txtZ に値を入れたいです。 教えてください

専門家に質問してみよう