面倒なフォームのクリアをまとめて簡単に出来る方法 ~Access~

Accessで入力フォームを作成する時には欠かせない入力クリア機能。
テキストボックスやコンボボックスが多い場合は一つ一つのコントロールを指定してNullやFalseをセットするのが面倒と言う事はありませんか?
今回はそんな時に利用すると便利な、コントロールをまとめてクリアできるVBAコードをご紹介します。
まずはコントロールの名前をルール化しましょう
例えばテキストボックスの場合は[txb???]、コンボボックスの場合は[cmb???]、チェックボックスの場合は[chk???]とコントロールの先頭にそれぞれの種類別に識別できるルールを設定しましょう。
※コントロール名は皆様、各々のルールで構いません。
クリアボタンのイベント プロシージャ
クリアボタンの[クリック時]のイベントプロシージャは以下のコードを参考にして下さい。
'*************************
'クリアボタン クリック時
'*************************
Private Sub cmdClear_Click()
'確認メッセージ出力
Response = MsgBox("画面をクリアしますか。", _
vbYesNo + vbQuestion + vbDefaultButton1, "クリアサンプルフォーム")
If Response <> vbYes Then
DoCmd.CancelEvent
SendKeys "{ESC}", False
Exit Sub
End If
'クリア処理を呼び出す
Call ClearObj
End Sub
クリア用の汎用コード
'*************************
'以下クリア処理
'*************************
Public Sub ClearObj()
Dim myObj As Object
'コントロールClearループ
For Each myObj In Me
'テキストボックス(Nullをセット)
If myObj.Name Like "txb*" _
Then
myObj.Value = Null
End If
'コンボボックス(Nullをセット)
If myObj.Name Like "cmb*" _
Then
myObj.Value = Null
End If
'オプションボタン(フレーム内をクリア)
If myObj.Name Like "flm*" _
Then
myObj.Value = Null
End If
'チェックボックス(Falseをセット)
If myObj.Name Like "chk*" _
Then
myObj.Value = False
End If
Next
End Sub
VBAコードの解説
テキストボックスにNullをセットする場合ですが、上記サンプルコードの10行目~13行目で実行しています。
ここではコントロール名の先頭にtxbが付与されたものは全てNullをセットするようにしています。
If myObj.Name Like "txb*" Then 'コントロール名がtxbかチェック
myObj.Value = Null 'Nullをセットしている
End If
応用例
数値用のテキストボックスの場合は0をセットしたい場合もありますよね?
その場合はコントロール名に数値用の名前を付与すれば良い訳ですね。(以下はコントロール名をtxbNumにした場合)
If myObj.Name Like "txbNum*" Then 'コントロール名がtxbNumかチェック
myObj.Value = 0 '0をセット
End If
上記以外のリストボックス等のコントロールでも同様に名前のルール化さえしっかりしていればいくらでも応用が利きます。
以上、今回はフォームのオブジェクトをクリアする汎用的なコードについてでした。
今回のサンプルファイルは以下のリンクからダウンロード可能です。




