• ベストアンサー

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

  • Richi
  • お礼率67% (39/58)

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.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 のようにして確認してみてください。

Richi
質問者

お礼

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

その他の回答 (2)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.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

Richi
質問者

お礼

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

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.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とかに変更になる。

Richi
質問者

お礼

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

関連するQ&A

  • TextBox1とTextBox2の数値の大小の比較について

    1)ユーザーフォーム上のTextBox1に入力された数値とTextBox2に入力された数値の大小の比較を下記のような感じで行ってみたところ、40>300や50>100という感じの結果になってしまいます(ゼロを無視してる?)プロパティは.Valueと.Textの両方を試してみたのですが、同じような結果だったと思います。正しい結果を出すにはどうすればよいのでしょうか。 If UserForm1.TextBox1.Value>UserForm1.TextBox2.Value then~ 2)変数を宣言して、その変数にTextBox1の内容(数値)を代入する場合、Integer型等とTextBox型のどちらとして宣言するのが正しいのでしょうか。 以上二点、よろしくお願いします。(Excel2000使用)

  • VB6.0でのTextboxの高さ変更

    VB6.0を使用しています。 下記のようにテキストボックスを動的配置した際にボックスの高さを変更したいのですが、文字の大きさ等に依存しているよう?で変更できません。 よく似た質問でMultiline をTrueにするような物があり、試してみましたがエラーとなってしまいます。 もう少し小さくしたいのですが何を変更・追加すればよいのでしょうか? どなたかご教授願います。 Private Sub Form_Load() Dim add_tbox As TextBox Set add_tbox = Controls.Add("VB.textbox", "text") With add_tbox .Text = "aaa" .Height = 240 '---テキストボックスの高さ .Left = 2270 .Top = 1700 .Width = 350 .FontSize = 9 '.MultiLine = False ---これを追加するとエラー"値の取得のみ可能なプロパティに値を設定する事はできません" .Visible = True End With MsgBox add_tbox.Height '---テキストボックスの高さ確認(270となっている) End Sub

  • TextBoxをInteger型の変数に代入したい

    開発環境は、VB2005 ExpressEditionです。 TextBoxをInteger型の変数に代入したいのですが。 Dim num01 As Integer 1 num01 = Int(TextBox1.Text) 2 num01 = CInt(TextBox1.Text) 3 num01 = Integer.Parse(TextBox1.Text) 1,2,3どれで実行しても”入力文字列の形式が正しくありません。”とでてしまいます。どなたか良い方法をご存知の方がいたら、教えて下さい。

  • RichTextBoxに代入されたTextBoxの数を表示

    VB2008を使用しています。現在、10個のTextBoxとそれに対応するCheckBoxを作成し、チェックの入ったTextBox内の文字をRichTextBoxに代入するプログラムを作成しています。そこでRichTextBoxに代入されたTextBoxの数を別のTextBoxに表示させたいのですが何か良い方法はありますでしょうか?現在、下記のようにコードを組んであります。 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click RichTextBox1.Clear() If Me.CheckBox1.Checked = True Then RichTextBox1.Text = TextBox1.Text If Me.CheckBox2.Checked = True Then If RichTextBox1.Text <> "" Then RichTextBox1.Text = RichTextBox1.Text & "・" End If RichTextBox1.Text = RichTextBox1.Text & TextBox2.Text ・ ・ ・ If Me.CheckBox10.Checked = True Then If RichTextBox1.Text <> "" Then RichTextBox1.Text = RichTextBox1.Text & "・" End If RichTextBox1.Text = RichTextBox1.Text & TextBox10.Text End If

  • テキストボックスの値を変数に代入したい。

    テキストボックスの値を変数に代入したいのですが、どういうコードを書けばいいですか? 例えばTextBox1の値を変数xに代入したいのですが。

  • ユーザーフォームのTextBoxの操作について

    皆様、こんにちは。 いつもお世話になっております。 ユーザーフォームのテキストボックスに何も入力されていないと自動的に0が表示されるようにしたいですが、エラーが出てしまいます。 具体的に、 1テキストボックス 2テキストボックス ・・・ 合計テキストボックス があって、詳細が分からなくて合計のテキストボックスにのみ入力する時に、合計テキストボックスをクリックしたときにその他のボックスに0が表示されるように書きたいです。 Private Sub TextBox9_Enter() Dim i As Integer For i = 1 To 8 If TextBox(i).Text = "" Then TextBox(i).Text = "0" End If Next i End Sub のように考えましたが、間違っていますね。 教えていただければ幸いです。 どうぞよろしくお願いいたします。

  • EXCEL VBA ユーザーフォーム内のテキストボックスを一括処理する方法について

    EXCEL VBAのユーザーフォームについて質問があります。 ユーザーフォームを作り、その中にコンボボックスを1個、テキストボックスを100個設置する。 コンボボックスの値が1のときはテキストボックス1~テキストボックス50までのEnabledをFalseに設定し、 コンボボックスの値が2のときはテキストボックス1~テキストボックス100までのEnabled をFalseに設定する。 このとき、TextBox1.Enabled = False、TextBox2.Enabled = False・・・と一つ一つ書いていくのではなく、 セルを処理するときと同様に、テキストボックスの番号を変数にして処理することは可能でしょうか。 Private Sub ComboBox1_Change()  Dim i As Integer   If ComboBox1.Value = 1 Then   For i = 1 To 50   TextBox(i).Enabled = False   Next i   ElseIf ComboBox1.Value = 2 Then   For i = 1 To 100   TextBox(i).Enabled = False   Next i   End If End Sub というような処理をイメージしているのですが、うまくいきません。どうぞよろしくお願いいたします。

  • テキストボックス 空白確認

    エクセル VBAで コマンドボタンをクリックすると テキストボックスに空白があった場合 空白のテキストボックスにセットフォーカスしたいのですが 下記のように少ない場合は まだいいですが 多くなってきたとき見易さの面でも簡単にしたいのですが VBだとコントロール配列のインデックス値をループ処理 すればよいと思いますがVBAだとどのようにすればいいのでしょうか? Private Sub CommandButton3_Click() If TextBox2 = "" Then TextBox2.SetFocus ElseIf TextBox3 = "" Then TextBo3.SetFocus ElseIf TextBox4 = "" Then TextBox4.SetFocus ElseIf TextBox5 = "" Then TextBox5.SetFocus End If 御願いします。

  • 現在どのTextBox上にフォーカスがあるのかを取得したいのですが・・・

    以前、TextBox1.Focusedで、TextBox1にフォーカスがあるかどうか判定できるという回答をいただき助かりましたが、現在、どこのTextBoxにカーソル(フォーカス)があるのかを取得することはできないでしょうか? というのも、タブ移動であるTextBoxにフォーカスが移ったときに、隣り合わせたTextBoxに値を入れたいので。 TextBox1.Focusedでも実現できたのですが、以下のようにIF文の嵐になってしまい、TextBoxを増やすとIF文を頭からなめるので処理スピードに問題が出てきそうなので。 If Me.TextBox1.Focused = True Then  TextBox_A.Text = "値1" ElseIf TextBox2.Focused = True Then  TextBox_B.Text = "値2" ElseIf TextBox3.Focused = True Then  TextBox_C.Text = "値3" ElseIf TextBox4.Focused = True Then  TextBox_D.Text = "値3"   ・   ・   ・ LostFocuseとかで、実現した方がいいのかもしれませんが・・・どうでしょう? 毎度、面倒なご質問ばかりで、恐縮です。 ご教授、よろしくお願い致します。 ちなみに、コーディング環境は、VB.NETです。

  • EXCEL VBAについて、ワークシート上に置いたTextBoxに値を入れる方法について

    すいませんEXCEL VBAについて質問があります。 エクセルのワークシート上にコントロールツールボックスから テキストボックスを2つ、コマンドボタンを1つ設置する。 アクティブになっているテキストボックスに”goo”という値を入れる。 これをVBAで処理するにはどうしたらよろしいのでしょうか。 ユーザーフォームのテキストボックスであれば Private Sub CommandButton1_Click() Dim i As Object Set i = ActiveControl If TypeOf i Is MSForms.TextBox Then i.Text = i.Text & "goo" End If Set i = Nothing End Sub これでできるはずですが、シート上に置くテキストボックスだと うまくいきません。 よろしくお願いいたします。

専門家に質問してみよう