ユーザーフォームの入力項目を一括クリアするプログラム(VBA)

2022年12月22日

入力用のユーザーフォームなどだと、転記が終わった後には入力内容をクリアしたいですよね。

そうした時には、入力項目を一括でクリアできるプログラムを作っておくと便利です。

今回紹介するコードは入力項目の数や種類に影響されないため、どんなユーザーフォームに対しても使用できます。

汎用的なプロシージャにしているので、ライブラリとして使ってみてください。

入力項目を一括クリアするプログラム

Public Sub CtrlsClear(ctrls As Controls, Optional blListClear As Boolean = False)
'ユーザーフォームの入力項目をすべてクリア
'blListClear:Trueの場合はコンボボックスとリストボックスの候補もクリア
    'コントロールコレクション(Controls)から1つずつ取り出してクリア
    Dim ctrl As Control
    For Each ctrl In ctrls
        Select Case TypeName(ctrl)
            Case "TextBox", "RefEdit"
                ctrl.Value = ""
            Case "CheckBox", "OptionButton", "ToggleButton"
                ctrl.Value = False
            Case "ComboBox", "ListBox"
                ctrl.Value = ""
                If blListClear Then ctrl.Clear
        End Select
    Next
End Sub
'/////呼び出し方法(ユーザーフォーム)/////
Private Sub CommandButton1_Click()
'クリックイベントなどでCtrlsClearプロシージャを呼び出す
    
    Call CtrlsClear(Me.Controls)
    
    'コンボボックス/リストボックスの候補もクリアしたい場合
    Call CtrlsClear(Me.Controls, True)
End Sub

CtrlsClearが入力項目を一括で削除するプロシージャです。

呼び出し方法のようにCall CtrlsClear(Me.Controls)とするとユーザーフォームの入力項目を削除することができます。

Call CtrlsClear(Me.Controls, True)とすると、コンボボックス/リストボックスの候補も削除することができます。

入力項目の一括クリア

画像のように次の7つの入力項目をすべてクリアすることができます。
(画像ではコンボボックス/リストボックスの候補もクリアしてします)

  1. テキストボックス
  2. コンボボックス
  3. リストボックス
  4. チェックボックス
  5. ラジオボタン
  6. トグルボタン
  7. RefEdit

解説

ユーザーフォームの入力項目はすべてコントロールコレクションに含まれます。

そのため、コントロールコレクションを引数ctrlsとして受け取っています。

    'コントロールコレクション(Controls)から1つずつ取り出してクリア
    Dim ctrl As Control
    For Each ctrl In ctrls
        Select Case TypeName(ctrl)
            Case "TextBox", "RefEdit"
                ctrl.Value = ""
            Case "CheckBox", "OptionButton", "ToggleButton"
                ctrl.Value = False
            Case "ComboBox", "ListBox"
                ctrl.Value = ""
                If blListClear Then ctrl.Clear
        End Select
    Next

このコードがメインの処理をしている部分で、コントロールコレクションから1つずつコントロールを取り出し、その種類(TypeName)に応じて分岐処理をさせています。

テキストボックスとRefEditについてはValueを""とします。

チェックボックス、オプションボタン、トグルボタンについてはValueをFalseとします。

コンボボックス、リストボックスもValueを""とするのですが、これらには選択候補があります。

そのため、If blListClear Then ctrl.Clearの部分にてblListClearがTrueの場合のみ候補もクリアしています。

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらってはいかがでしょう?
VBAの作成依頼はこちらから

《VBA中級者向けの本》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。

created by Rinker
技術評論社
¥3,608 (2023/06/06 16:32:04時点 Amazon調べ-詳細)

他の「VBA」の記事はこちらからどうぞ

VBA

Posted by やろまい