コンボボックスの値もクリアしたい!

このQ&Aのポイント
  • コンボボックスの値もクリアしたい!
  • 現在下記のコードでtxtBoxの値をクリアしていますが、同フォームにあるコンボボックスの値もクリアしたいのですが解りません。
  • 教えてください。
回答を見る
  • ベストアンサー

コンボボックスの値もクリアしたい!

コンボボックスの値もクリアしたい! 現在下記のコードでtxtBoxの値をクリアしていますが、 同フォームにあるコンボボックスの値もクリアしたいのですが解りません。 教えてください。 Public Sub txtクリア(objForm As Object) Dim txtclear As Control For Each txtclear In objForm.Controls If txtclear.ControlType = acTextBox Then txtclear.Value = Null End If Next End Sub

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

コメント足してみました。 'フォーム上のすべてのコントロールに対するループ処理を行う For Each txtclear In objForm.Controls  '対象とするコントロールの種類がテキストボックスか、判断する  If txtclear.ControlType = acTextBox Then   '対象とするコントロールの種類がテキストボックスなので、Nullを設定(=クリア)する   txtclear.Value = Null  End If 'フォーム上のすべてのコントロールに対するループ処理の終端 Next なので、必要とするIF文で一まとめの処理を追加してください。  '対象とするコントロールの種類がコンボボックスか、判断する  If txtclear.ControlType = acComboBox Then   '対象とするコントロールの種類がコンボボックスなので、Nullを設定(=クリア)する   txtclear.Value = Null  End If どこに追加するか、はお分かりですね? これ以上のコントロールになるなら、Select Case 文の方がよさそう。

KOUSUKE0409
質問者

お礼

早急な返答ありがとうございます! バッチリでした。 また機会がありましたら宜しくお願いいたします。

関連するQ&A

  • テキストボックスかコンボボックスを条件としたい

    フォーム上のコントロールを取得する時に、 「テキストボックスかコンボボックスなら」としたいのですが、VBAコードがわかりません。 ************************************************************ Sub Sample() Dim myCtrl As Control Dim myForm As String myForm = "フォーム1" For Each myCtrl In Forms(myForm).Controls If myCtrlのタイプがテキストボックス Or コンボボックス Then Debug.Print myCtrl.Name End If Next End Sub ************************************************************ に修正していただけますか? ControlType プロパティを使うと思うのですが、使い方がわかりません。 ご回答よろしくお願いします。

  • テキストボックスなら空白にする

    フォームにテキストボックス2つとコンボボックス2つを設置して、 規定値に値を設定し、 Private Sub cb_テキストボックスなら空白にする_Click() Dim ctl As Control For Each ctl In Me.Controls If ctl.ControlType = acTextBox Then ctl.Value = Empty End If Next ctl End Sub としたのですが何も起こりません。 空白にするにはどうすればいいでしょうか? あと、 ctl.Valueと打つ時に、 ドットの後に、Valueが一覧に出てきませんでした。 それが原因で空白にならないのでしょうか? ご回答よろしくお願いします。

  • コントロールタイプを絞ってループしたい

    アクセスのフォーム上のコントロールをループする際に テキストボックスだけ絞ってループしたいのですが Sub Sample() Dim myFormName As String Dim ctl As Control myFormName = "フォーム1" For Each ctl In Forms(myFormName).Controls If ctl.ControlType = acTextBox Then End If Next ctl End Sub これだとテキストボックスの量が多くて、2秒くらいかかるのですが For Each ctl In Forms(myFormName).Controls この時点で、テキストボックスだけ絞る方法はありますか? For Each ctl In Forms(myFormName).ControlType(acTextBox) こうするとエラーになりました。 ご教授よろしくお願いします。

  • publicプロシージャの記述方法で教えてください。

    publicプロシージャの記述方法で教えてください。 非連結テキストボックスのクリアを複数のフォームで行いたい為、標準モジュールに下記のコードを作成し、各フォームの削除ボタンを押しCallで呼び出すと [Meキーワードが不正] とエラーが出てしまいます。 どの様にすれば良いかアドバイスよろしくお願いいたします。 Public Sub txtクリア() Dim txtclear As Control For Each txtclear In Me.Control If txtclear.ControlType = acTextBox Then txtclear = Value = Null End If Next End Sub

  • アクセスのサブフォームの値のチェック

    Accessのサブファームにある、コンボボックスの値をチェックしたいので、下記のようにしてみました。 Dim ctl As Control For Each ctl In Me.Controls If ctl.ControlType = acSubform Then msgbox Forms!メインフォーム名!サブフォームコントロール名.Form!コントロール名 End If Next すると、サブフォームの現在選択しているコンボボックスの値しか表示されません。 現在表示されているサブフォームのコンボボックスの値すべてを表示させるにはどうすればいいのでしょうか。よろしくお願います。

  • アクセス超初心者です。

    アクセス超初心者です。 下記内容のイベントプロシージャーを記述しました。 フォーム内にクリアというコマンドボタンを作成。で、クリックしたら書き込まれていたフォームの内容が消えるように作ったのですが。(ネット上で見つけたプロシージャーを参考に作成しました) 黒丸部分が黄色くなってエラーになります。 どのように修正すればいいのでしょうか? 分かる方いましたらご教示ください<m(__)m>よろしくお願い致します。 Private Sub cmd_クリア_Click() Dim CT1 As Control For Each CT1 In Me.Controls If CT1.ControlType = acTextBox Or CT1.ControlType = acComboBox Then ●CT1.Value = Null ElseIf CT1.ControlType = acCheckBox Then CT1.Value = False End If Next End Sub

  • Accessのコントロールの数え方

    Access 2003のコントロールについてお教えください。 フォーム1というフォームにチェックボックスがいくつも配置されています。 チェックボックスがいくつ配置されているか知る方法はあるのでしょうか? また、いくつのチェックボックスにチェックが入っているか知る方法はあるでしょうか? ネットで検索したところ、下記のコードが約にたつような気がするのですが、どうやって活用すればよいのかがわかりません・・・・ For Each ctl In Me.Controls With ctl If .ControlType = acTextBox Then 'コントロールの種類がテキストボックスなら値をNull(空)に設定 .Value = Null End If End With Next ctl わかりでしたらお教えください。よろしくお願いします。

  • Excelのワークシートでのコンボボックスについて

    Excelのワークシートでコンボボックスを設定する方法を教えてください。 「フォームコントロール」と「ActiveXコントロール」の違いがわかりません。 添付の画像の通りコンボボックスに西暦を入力(別シートに入力済みの値を表示するように設定)してあるのですが、ファイルを保存しているにも関わらず、再度ファイルを開くとコンボボックスの中のリストは空欄になってしまいます。 今は「ActiveXコントロール」のコンボボックスで設定しています。 コードは以下のように設定してみたのですが、設定内容や設定箇所が違うのでしょうか? ////////////////////////////////////////////////////// Private Sub ComboBox1_DropButtonClick() Dim sh As Worksheet Set sh = Worksheets("マクロ") Dim i As Integer Dim lastRow As Integer lastRow = sh.Cells(Rows.Count, 1).End(xlUp).Row With ComboBox1 For i = 2 To lastRow If ComboBox1 = "" Then .AddItem sh.Cells(i, 1).Value End If Next i End With End Sub ////////////////////////////////////////////////////// コンボボックスのリストの内容が消えてしまうので、 コードの内容は同じで以下のところにもコードを書いてみました。 ////////////////////////////////////////////////////// Private Sub Worksheet_Activate() Dim sh As Worksheet Set sh = Worksheets("マクロ") Dim i As Integer Dim lastRow As Integer lastRow = sh.Cells(Rows.Count, 1).End(xlUp).Row With ComboBox1 For i = 2 To lastRow If ComboBox1 = "" Then .AddItem sh.Cells(i, 1).Value End If Next i End With End Sub ////////////////////////////////////////////////////// なんだかもう、訳がわからずぐちゃぐちゃです。 コンボボックスの中に値が入っていると、実行ボタンをクリックしたときは正常にやりたい結果を出すことが実現できます。 ファイルを閉じた後に再度開いてもコンボボックスの中に値があるようにするにはどうしたらよいのか、ド素人の私にご教授いただきたくお願いいたします。

  • ExcelVBAコンボボックスの値の入力

    ExcelVBAでマルチページでユーザーフォームを作っています。 マルチページを作製しているシートのシート2とシート3にそれぞれコンボボックスに当てはめる値を入れてあります。 コンボボックス1には「シート2のA2から最後」まで。 コンボボックス2には「シート3のA1から最後」まで。 というように設定してあります。 コードの記述としてはこんな感じでしました。 Private Sub ComboBox1_DropButtonClick() Dim i As Integer Dim lastRow As Integer lastRow = Cells(Row.Count, 1).End(xlUp).Row With ComboBox1 For i = 2 To lastRow If ComboBox1 = "" Then .AddItem Worksheets("Sheet2").Cells(i, 1).Value End If Next i End With End Sub これはコンボボックス1の場合なのですが、2は一部を変えています。 コンボボックスを選択時にシートに記載してある内容は表示されるのですが、行が多い方に引っ張られる感じになっています。 コンボボックス1の方は今のところ30行ちょっとなので、その分のデータが表示されます。コンボボックス2の方は今のところ10行程度なので、全てを表示した後に空白が表示されています。見た感じで、シート3のデータと空白分を合わせて、シート2つまりは、コンボボックス1と同じ分だけ表示しようとしているみたいなのです。 よく分からないエラーなのですが、これを回避する方法はありますでしょうか?

  • もしフォームヘッダーにコントロールがあるのなら

    アクセスのフォームの、フォームヘッダーに検索用テキストボックスとコンボボックスがあり、 詳細エリアにレコードソース(コントロールソース)に紐付いたテキストボックスが複数あります。 フォームヘッダーのフィルタを解除するコマンドを実行して、 フォームヘッダーのテキストボックスとコンボボックスをnullにしたいのですが、 vbaで「もしフォームヘッダーなら」ってするにはどうすればいいでしょうか? フォームヘッダーのコントロール名も詳細エリアのコントロール名も 区別のないコントロール名でなのでコントロール名で条件分岐をすることは不可能です。 Private Sub フィルタを解除コマンド_Click() Dim ctl As Control For Each ctl In Me.Controls If (ctl.ControlType = acTextBox) Or (ctl.ControlType = acComboBox) Then 'ここで、もしフォームヘッダーにコントロールがあるのならってしたい Me.Controls(ctl.Name) = Null End If Next ctl Me.Form.FilterOn = False End Sub このコードに付け加えてくれませんか? Debug.Print ctl.Name でコントロール名を取得するとフォームヘッダーも詳細もどちらのコントロール名も取得されてしまいます。 On Error Resume Next 以外でお願いします。

専門家に質問してみよう