- ベストアンサー
Access2000でTextBox変数の代入
Access2000でTextBox変数を作成し、条件に応じて フォーム上に配置した2つのテキストボックスをその変数に代入したいのですが、うまくいきません。 Public tBox as TextBox If i = 1 Then Set tBox = テキスト1 ElseIf i = 2 Then Set tBox = テキスト2 End if ※ テキスト1、テキスト2はフォーム上に配置した テキストボックスの名称 このコードを実行すると、テキスト1は テキスト1.Textと解釈され、Textプロパティに何も設定 されていない場合、tBoxにはNULLが代入されます。 Textプロパティの値ではなく、テキストボックスオブジェクトそのものを変数に代入するにはどうすればよいのでしょうか。 ご教授お願いします。 環境は OS:Windows2000 Professional Access2000 です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>このコードを実行すると、テキスト1は >テキスト1.Textと解釈され、Textプロパティに何も設定 >されていない場合、tBoxにはNULLが代入されます。 tBoxが、 Public tBox as TextBox と宣言されているのにTextプロパティの値だけが格納されることはありません。そんなことがあったら実行時エラーになってしまいます。 なので、コード自体は合っています。 ただ単純に確認の仕方がまずいだけでは? Public tBox as TextBox If i = 1 Then Set tBox = テキスト1 ElseIf i = 2 Then Set tBox = テキスト2 End if MsgBox tBox.Name のようにして確認してみてください。
その他の回答 (2)
- nishi6
- ベストアンサー率67% (869/1280)
下のコートでは、変数『myText』にテキストボックスを設定(代入)しています。 別に、Collection を作る方法も考えられます。質問の主旨と合うかどうかはわかりませんが・・・ ご参考に。 Dim idx As Integer Private Sub コマンド1_Click() 'フォームに、 ' テキストボックス(テキスト1、テキスト2) ' コマンドボタン(コマンド1)を貼り付け Dim myCtrl As Control Dim myText As Control 'テキスト1、テキスト2のどちらを表示するか切り替えているだけ '質問とは余り関係ない If idx = 0 Then idx = 2 idx = (1 + 2) - idx 'myTextにテキストボックスを割り当てている For Each myCtrl In Controls 'コントロール名で割り当てる対象を決めている If myCtrl.Name = "テキスト" & idx Then Set myText = myCtrl Exit For End If Next 'myTextのプロパティが使えることの確認 MsgBox myText.Name & " の内容を表示します。" & vbLf & _ "テキスト内容は " & myText.Value & vbLf & _ "テキストボックスの高さは" & myText.Height & vbLf & _ "テキストボックスの幅は" & myText.Width End Sub Private Sub Form_Load() テキスト1 = "AAAAAAAAAA" テキスト2 = "BBBBBBBBBB" End Sub
お礼
お返事頂きましてありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
下記で判る一助にしてください。 VBでForm1にText1,Text2,Text3のテキストボックスを貼り付ける。Form1のClickイベントとして Public tBox As TextBox Private Sub Form_Click() i = Text3.Text If i = 1 Then Set tBox = Text1 ElseIf i = 2 Then Set tBox = Text2 End If Text3.Text = tBox.Text End Sub Form3に1か2を入れる。1と入れてForm1をクリックすると-->Text1の内容がText3に、2と入れてForm1をクリックすると-->Text2の内容がText3に入ります。(テスト済み) これでtBox As TextBoxとした使い方は成功したことに なるのではないでしょうか。 VBAでは、Text1--->テキスト1とかに変更になる。
お礼
お返事頂きましてありがとうございました。
お礼
お返事頂きましてありがとうございました。 おっしゃる通り確認の仕方が悪かったようです。 If tBox = テキスト1 Then 処理 Else If tBox = テキスト2 Then 処理 End if という処理を後で行っていたのですがこれがうまくいきませんでした。 そこで If tBox.Name = "テキスト1" Then ・・・ 以下略 とすることで目的の動作を行うことができました。 ありがとうございました。