• ベストアンサー

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

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

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

  • ベストアンサー
noname#4564
noname#4564
回答No.1

Forms("FormName").Controls("ControlName").Value = "A"

関連するQ&A

  • サブフォームに変数を代入し、RecordSourceの値を取得したい

    サブフォームに変数を代入し、RecordSourceの値を取得したいのですがうまくいきません。 Sub test1() Dim サブフォーム As String Dim フォーム As String フォーム= "土台" サブフォーム = "フォーム1" MsgBox Form_フォーム1.RecordSource End Sub ******************************************************************* Sub test2() Dim サブフォーム As String Dim フォーム As String フォーム= "土台" サブフォーム = "フォーム1" MsgBox Form_フォーム1.RecordSource MsgBox Forms(フォーム).Controls(サブフォーム).RecordSource End Sub オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438) ******************************************************************* Sub test3() Dim サブフォーム As String Dim フォーム As String フォーム = "土台" サブフォーム = "フォーム1" MsgBox Forms(サブフォーム).RecordSource End Sub 実行時エラー'2450' マクロの式またはVisual Basic コート゛で参照されている 'フォーム名'フォームが見つかりません。 ******************************************************************* test1~3のうち test1のみはうまくいくのですが 変数を代入したいです。 ヘルフ゜のには Forms![受注]![受注サブフォーム].Formとなってますが これじゃ変数を代入できないですよね。 どうすればサブフォームに変数を代入しつつ、RecordSourceの値を取得できるのでしょうか? よろしくお願いします。

  • テキストボックスに変数を表示させたい

    access2003です。 フォーム1にテキスト0を配置し vbaで Private Sub Form_Open(Cancel As Integer) Dim 文字列 As String 文字列 = "a" End Sub と作成しました。 このときフォーム1をダブルクリックして開いた時に テキスト0に文字列に代入した変数を表示させるにはどうすればいいのでしょうか? テキスト0のコントロールソースに =[文字列] とやっても #Name? になってしまいます。 どうすれば読み取った変数をテキスト0に表示させることが可能なのでしょうか? よろしくお願い致します。

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

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

  • 変数から命令?

    例えば dim a as String a="dim b as Long" という風にしてみて aの値に入ってるやつを実行(?)するようなことができますか? つまり、ここでいうなら aに"dim b as Long"をいれて なんらかの処理を行って 変数bを作成することはできますか?

  • AccessVBAでの変数の使い方

    下記のような変数の使い方がAccessVBAでできれば 教えていただきたいと思います。 やりたい事は、変数を利用して、フォームやテーブ ル等を利用することです。 例.フォーム「名前1」の「ラベル1」のバリューを 「あいうえお」に変更 --------------------- Dim Class As String '変数に「名前1」を代入 Class = 名前1 'フォーム「名前1」の「ラベル1」の値を変更 Form_Class!ラベル1="あいうえお" --------------------- というように、変数を利用してフォームやテーブル を利用したいのです。 実際このようにすると、Form_Class がそのまま フォーム名ととらえられ、変数として機能しません でした。 宜しくお願いいたします。

  • 変数に取得した値をテキストボックスやコンボボックスに表示させた

    アクセスで、変数に取得した値をテキストボックスやコンボボックスに表示させたいと思っています。例えば、まずクエリをひとつ作成します。そのクエリのレコードをループで配列変数に取得していきます。フィールド(IDと名前)レコード(件数は2件とします) public ID(2) as String public 名前(2) as String Sub temp() Dim Db As Database Dim rs As Recordset Dim I As Integer Set Db = CurrentDb Set rs = Db.OpenRecordset("Q_クエリ", dbOpenDynaset) rs.MoveFirst For I = 1 To 2 If IsNull(rs![ID]) = False Then ID(I) = rs![ID] If IsNull(rs![名前]) = False Then 名前(I) = rs![名前] rs.MoveNext Next I rs.Close Db.Close End Sub (この時点で変数に値は入っているようです。) フォームで作成したテキストボックスやコンボボックスに実行ボタンをクリックすると表示するというコードは下記のように記述してみました。 Private Sub 実行_Click() Call temp (標準モジュールを呼び出す) ID = ID(1)     名前 = 名前(1) (2)省略 End Sub すると、かならず「実行時エラー'13'; 型が一致しません。」とエラーが出ます。なにぶんVBA初心者になりますので、ご教授お願い致します。ちなみに同じような方法で、同一フォーム内に2つテキストボックスを用意し、片方に値を入力して実行するともう一方のテキストボックスにその値が表示すると言う実験は成功しています。もっと他に良いコードがあれば教えて下さい。お願いします。

  • 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には変数は指定できないのでしょうか? 指定できるのであれば何か原因はあるのでしょうか? 逆に指定できないのであれば、いい方法を教えてください。

  • 【ACCESS2003】サブフォーム名を変数に入れたい

    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 どのようにすればサブフォームの名前を変数に入れて、なおかつサブフォーム名を可変にし(ここで言うところのサブフォームの最後の数値を変えて)サブフォームが扱えるようになりますか? 教えてください。よろしくお願いいたします。

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

    変数にフォームからの入力値は入るのですが。 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)

  • Access-VBAのPublic変数について =基本的な事です=

    フォームAのテキストボックスに入力された値をフォームBで使用したいのですが、調べるとPublic変数に値を代入しておけばフォームAを閉じても値を保持できるとの事でした。 そこで、 (1) 標準モジュール(My_Moduleという名前)を作成しそこに1行Public Hensu as Long と定義しました。 (2) フォームAにボタンを作成し、そのクリックイベントに、 Hensu=Text1.Value というコードを記述しました。 (3) フォームBにボタンを作成し、そのクリックイベントに、 Text1.Value=Hensu というコードを記述しました。 フォームBのボタンをクリックすると、Text1に値が代入されるかと思いましたが、意に反しHensuの中身はNullでした。 どのようにすればフォームBで変数の値を取得することが出来るのでしょうか? ちなみにフォームAからPublic Hensuには値が代入されているようで、イミディトウインドウで?Hensuとするとちゃんと代入された値が表示されます。

専門家に質問してみよう