• 締切済み

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

みんなの回答

回答No.1

「Forms(area).Controls(city)」の書き方で問題ないです。(Access2000) ただし、「Forms(area).Controls(city)」や「Forms(area).Controls(name)」が どの種類のコントロールを指しているか不明だが 「Forms(area).Controls(city) = Forms(age).Controls(name)」は コントロールにコントロールを代入することになるのでエラーになると思う。 プロパティを省略しないで 「Forms(area).Controls(city).Properties("Text") = Forms(age).Controls(name).Properties("Text")」 としたらどうでしょうか?

関連するQ&A

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

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

  • accessのVBAで変数名でフィールド指定は?

    VBAの記述として フィールド名を指定するときに通常であれば forms![顧客一覧]![ID]やforms![顧客一覧]![age]と記述しますが この[ID]という部分についてあるフォームから IDという文字があるときはIDフィールド、 ageという文字があるときはageフィールドに記述というのはできるのでしょうか?

  • フォームチェックで変数は使えませんか?

    いろいろなフォームに対応する汎用チェックスクリプトを 書いているのですが、 strName = strcChecks[i]; var a = document.forms[0].strName.value;                ▲               この部分 ・・・・の名前指定の際、変数が使えないのでしょうか。 たくさん入力するテキストボックスやらチェック ボックスがあって一つ一つ、document.forms・・・ と書くのが手間なので何か方法があれば・・・

  • インスタンス名の指定に変数を使いたい

    ある一つのボタンオブジェクトで、マウスイベントによって別のムービーをコントロールしたいのですが、 同じボタンでも時々の状況によってコントロールする対象となるムービーが違うのです。 そこで、状況1では変数Aにムービー1のインスタンス名を、状況2では同じ変数Aにムービー2のインスタンス名を代入し、ボタンオブジェクトのスクリプトの中で変数Aの値をコントロール対象となるムービーのインスタンス名として使って、結果的に状況次第で操作対象を変える、ということは出来ないのでしょうか? traceアクションで見ていると変数の値は正しく変化しているのですが、ムービーのコントロールはまったくできず、困っております。 ボタンには、変数Aがnameだとすると、 on (rollOver) {   trace(name);   _root.name.gotoAndStop(2); という記述をしております。 解決策をご存知の方、どうかご回答よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • VB.Netのコントロール名の操作について

    VB.Netのコントロール名の操作について教えて下さい。 変数Aに代入されている値(コントロール名)から、そのコントロールがフォーム上に存在するかどうか判断し、存在すればそのコントロールに入力されている値を取得したいのですが、ロジックがよくわかりません。 下記のように作りましたがエラーがでます。 どなたか教えて下さいm(_ _)m Dim CntWk As Control Dim objwk As Object Dim 変数A As String For Each CntWk In objwk If cntKoumoku.Name = 変数A Then    MsgBox(cntKoumoku.Visible)  End If Next ちなみにエラーは、  「オフジェクト参照がオフジェクトインスタンスに設定されていません」と出ます。 これはロジックの問題外かと思いますが、.Netに不慣れなためよくわかりません。

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

    エクセル フォーム上の全てのコントロールを取得したい 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につけると、全てのコントロール名が取得できます。 同じようにエクセルで使うにはどこを修正すればいいでしょうか? フォーム名は、変数に入れて使いたいです。

  • thisとvar ?

    javascript初心者です。 コンストラクタ(プロトタイプ)とクロージャを学んでいますが、 コンストラクタ(プロトタイプ)では、関数内にthisで変数宣言、クロージャはvarで宣言しています。 この違いの理由は何でしょうか?漠然とした質問ですみません。 thisとvarでの変数宣言の違いなど教えていただけないでしょうか? コンストラクタ-------------------- function Person(n){ this.name = n; } Person.prototype.city = 'Tokyo'; Person.prototype.moveTo = function(c){ document.write(this.name + ': Moving to... ' + c + '<br>'); Person.prototype.city = c; } クロージャ------------------- function Person(n, a){ var name = n; var age = a; return { getName: function() { return name; }, setAge: function(i){ if( 0<= i ){ age = i; } }, getAge: function(){ return age; } } }

  • このようなプログラムを教えて下さい

    コマンドプロンプト上の標準入力で文字列と数値を複数組入力していき、 その入力された文字列とそれに対する数値をその数値で比較し最後に大きい順で順に表示するようなプログラムを作りたいのですが、よく構造がわからないので教えて下さい。(ちなみに入力された文字列と数値は、それらを1つのクラスのフィールドとして定義するとして) たとえば人の名前と年齢を入力し大きい順に並べるとか NAME :Bob age :12 NAME :Tom age :25 NAME :Ken age :3 NAME : NAME:Tom,age:25 NAME:Bob,age:12 NAME:Ken,age:3 このように出力したいのですが もしこのようなプログラムを作成することのできる方いましたら、 教えてやってください。

    • ベストアンサー
    • Java
  • ユーザーフォームで動的(Me.Controls.Add)に作成したコントロールの削除

    Excelのvbaでユーザーフォームを作成しました。 UserForm_initialize()内でコントロールを以下のように動的に作成・配置しました。 Me.Controls.Add("Forms.ComboBox.1", "ComboBox" & i, True) 別のコマンドを用意して、そこから表示するコントロール数を変更させたいので、パブリック変数を使用してループ回数を指定したうえでフォームを再表示させました。 しかし、ループ回数を増やした場合は良いのですが、減らした場合でも一度表示されたコントロールが消えません。 良い方法を教えて下さい。 よろしくお願いします。

  • c++ 参考書の問題

    参考書の練習問題が解けません。教えてください。 以下問題文です。 5つの名前をvector<string> nameに読み込み、名前が指定された人の年齢をユーザに入力させ、年齢をvector<double> ageに格納せよ。次に、name[i]とage[i]のペアを5つ出力せよ。名前をソートし(sort(name.begin(), name.end()))、name[i]とage[i]のペアを出力せよ。ここで注意しなければならないのは、age vectorの順序をソートされたname vectorと正しく一致させることである。ヒント:ageをソートする前にコピーを作成し、それを使ってageをソートした後の正しい順序でageのコピーを作成する。つぎに同じことを繰り返すが、今後は任意の数の名前を使用できるようにする。 以上です。よろしくお願いいたします。