- ベストアンサー
フォームにテキストボックスとコンボボックスを設置して空白にする方法
- フォームにテキストボックスとコンボボックスを設置し、特定のボタンをクリックすると、テキストボックスの値が空白になるようにする方法について説明します。
- 設置したテキストボックスの値をクリアするためには、コントロールのValueプロパティを使用します。
- ただし、コントロールのValueプロパティを入力する際には、ドットの後にValueが表示されないことがあります。この場合、別の方法を試してみるか、コントロールのプロパティウィンドウを確認してください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> ctl.Value = Empty ↓ ctl.Value = Null として、どうなりますか。
その他の回答 (2)
- piroin654
- ベストアンサー率75% (692/917)
コンボボックスにデータが設定されていないと クリックというイベントが拾われないのでは と思いますが。 たとえば、コンボボックスの「値集合タイプ」を 「値リスト」にして、「値集合ソース」に "A";"B";"C";"D" を貼り付けて保存し、フォームで確認してみたら どうですか。コンボボックスのデータを表示し、 どれかデータをクリックしてみてください。 こちらでは、コンボボックスにデータを設定して、 質問のコードで動きましたが。 コンボボックスのクリックイベントで、 (1) 確実にテキストボックスのデータをクリアする には、たとえば、コンボボックスの「値集合タイプ」を 「値リスト」にして、「値集合ソース」に "A";"B";"C";"D" を貼り付けて保存し、フォームを表示し、テキスト ボックスに記入し、コンボボックスのリストを 表示し、どれか適当な値をクリックする。 (2) 質問の方法をとると、規定値にたとえば10として、 保存し、フォームを表示し、コンボボックスのリストを 表示して(空のリストですが)クリックしてコンボボックス で表示されていた10という値が消えたならば、この時点では データは消去されていませんが、その後、テキストボックス をクリックするとデータが消去されます。 本来は、コンボボックスのクリックイベントはコンボボックの リストのクリックを指すと思われますが、既定値で表示されている ところは、テキストボックスのようなところで本体は リスト部分であろうと思います。 また、質問のコードをフォーカス取得時に設定すると、 規定値の有無にかかわらず、質問のコードは動きます。
お礼
規定値に値を設定していてもデータが設定されていないと認識されるようですね。 「値リスト」にして、「値集合ソース」に"A";"B";"C";"D"としても 質問文に書いたコードではダメでした。 と言うのも質問文自体が間違っていました。 Private Sub cb_テキストボックスなら空白にする_Click() Dim ctl As Control For Each ctl In Me.Controls If (ctl.ControlType = acTextBox) Or (ctl.ControlType = acComboBox) Then ctl.Value = Empty End If Next ctl End Sub にするべきでしたね。 上記のコードだとなぜかコンボボックスだけ空白にできました。 テキストボックスには規定値として「a」が入ってますが フォーム上でbに変えて、上記コードを実行するとaに戻ります。
- TooManyBugs
- ベストアンサー率27% (1472/5321)
TextBoxにValueプロパティが無いから。 ctl.Text = "" ctl.Text = String.Empty にするか ClearTextBox(Me) でよいのでは。
お礼
ドットの後に、Valueが出てこない理由はTextBoxにValueプロパティがないからなのですね。 ctl.Text = String.Empty については構文がエラーになってしまいます。 ClearTextBox(Me) でも Clear TextBox(Me) ダメでした。
お礼
なぜかnullにしたら出来ました。ありがとうございました。