#309 すべてのテキストボックスを空欄にする方法 フォーム、VBA

特定のテキストボックスの値をクリアするには、そのテキストボックスのValueプロパティにNullを代入します。一方、特定のテキストボックスではなく、とにかくフォーム内のすべてのテキストボックスをクリアしたいといった場合には、「Controls」コレクション内を探索して、"コントロールの種類(ControlTypeプロパティ)がテキストボックスコントロールならNullを代入する"というプログラムで実現することができます。

この方法は、特定のコントロール名を指定していないために、デザイン上でテキストボックスが増えたり減ったりしても、あるいは名前が変わったりしても、プログラムを書き換える必要がないというメリットがあります。
Private Sub cmdClear_Click()
'[クリア]ボタンクリック時

  Dim ctl As Control
  
  On Error Resume Next
  'このフォーム内のすべてのコントロールを検索
  For Each ctl In Me.Controls
    With ctl
      If .ControlType = acTextBox Then
        'コントロールの種類がテキストボックスなら値をNull(空)に設定
        .Value = Null
      End If
    End With
  Next ctl

End Sub

実行前 実行後
実行前 実行後

※テーブルとの連結フィールドによっては値をNullに設定できないものもあるので(オートナンバー型など)、On Error Resume Nextによってそのようなエラーを無視するようにしています。

※組み込み定数"acTextBox"は、コントロールの種類としてテキストボックスコントロールを表すものです。これを書き換えることによって、他の特定のコントロールの種類も、値をまとめて変更することができます。
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved