ACCESS VBAを学習しています。
今回はVBAを使ったフォーム内の入力欄をクリアする方法を学びます。
この記事では、使い方と使用例を掲載しています。
使い方については、よく使う部分だけを抜粋してご紹介しています。
詳細は公式のドキュメントをご覧ください。
説明・パラメータ
フォーム内の各コントロールに対して順番に処理をしていきます。
書式
1 2 3 4 5 6 7 8 9 10 |
Private Sub button_クリア_Click() Dim Clear As Control For Each Clear In Me.Controls With Clear If .ControlType = [コントロールの種類] Then .Value = "" End If End With Next Clear End Sub |
[コントロールの種類]はテキストボックスやコンボボックスなどを指定します。以下の種類などがあります。
- acCheckBox
- acComboBox
- acCommandButton
- acTextBox
Clearはループ処理を行うために用意した変数です。
「Me.Controls」で指定したフォーム内の全コントロールを一つずつ順に「Clear」に入れて順に処理していきます。
Withは同じ変数(今回はClear)に対して、毎回「Clear.~」と指定する手間を減らすことができます。
With内であれば「 . ~」と始めることができます。
If文内ではコントロールの種類が[コントロールの種類]で指定したものと一致した場合に、その値を「””」空白に変更しています。
→For Eachの使い方
→Withの使い方
→Ifの使い方
使用例(コード)
ヘッダにあるテキストボックスの値を全てクリア
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Private Sub button_クリア_Click() '各コントロールを一時的に格納する変数を用意 Dim Clear As Control 'ボタンやテキストなどの各コントロールの値を全てクリア 'ヘッダの各コントロールを変数Clearに入れて繰り返し処理を行う For Each Clear In Me.Section(acHeader).Controls '変数Clearに格納されたコントロールに対してWithを使って処理 With Clear 'もしコントロールタイプがテキストボックスなら If .ControlType = acTextBox Then '値を空白に変更 .Value = "" End If End With Next Clear End Sub |
「For Each Clear In Me.Section(acHeader).Controls」とありますが、これはヘッダ内の全コントロールに対して、変数「Clear」に代入して順に処理していくことを指示しています。
もちろん詳細セクションやフッタを指定することもできます。実行結果は↓の通りです。
↑のようにヘッダのテキストボックスに入力されていた値が、「クリア」ボタンをクリックすることで、↓のように値がクリアされます。
参考
公式ドキュメントです。
セクションプロパティ↓
Section プロパティ – Microsoft サポート
コントロールの種類↓
AcControlType 列挙 (Access) | Microsoft Learn
ACCESSの記事を一覧にしています。ACCESS VBAの正式な情報は公式ドキュメントを読むべきですが、このサイトでは実際に使う場面を想定して紹介しているので、公式ドキュメントと併せて読んでいただくと理解が深まると思います。
コメント