こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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 です。

投稿日時 - 2002-11-03 22:00:26

QNo.396256

困ってます

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

>このコードを実行すると、テキスト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

のようにして確認してみてください。

投稿日時 - 2002-11-04 02:36:30

お礼

お返事頂きましてありがとうございました。
おっしゃる通り確認の仕方が悪かったようです。
If tBox = テキスト1 Then
処理
Else If tBox = テキスト2 Then
処理
End if
という処理を後で行っていたのですがこれがうまくいきませんでした。

そこで
If tBox.Name = "テキスト1" Then
・・・ 以下略
とすることで目的の動作を行うことができました。

ありがとうございました。

投稿日時 - 2002-11-04 09:29:02

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

下のコートでは、変数『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

投稿日時 - 2002-11-04 01:08:17

お礼

お返事頂きましてありがとうございました。

投稿日時 - 2002-11-04 09:24:52

ANo.1

下記で判る一助にしてください。
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とかに変更になる。

投稿日時 - 2002-11-03 22:42:21

お礼

お返事頂きましてありがとうございました。

投稿日時 - 2002-11-04 09:24:19

あなたにオススメの質問