【時短テク】VBAでユーザーフォームの入力を1秒で一括リセットする方法

【業務効率化】VBA
スポンサーリンク

「はぁ……。この入力フォーム、項目が30個もあるよ。リセットボタンを作るのに、また1行ずつ TextBox1 = “” って書かなきゃいけないの? 指が腱鞘炎になっちゃうよ……」

こんな経験はありませんか?

現場で「みんなが入力しやすいフォームを!」と張り切って作ったは良いものの、項目が増えるたびにコードも長くなり、修正するだけで日が暮れる。結局、コピペミスで特定のボックスだけがクリアされないというトラブルも発生しやすくなります。

しかし、VBAの「ループ処理」を使えば、項目が10個でも100個でも、たった数行のコードで一気に操作可能です。

今回は、実務で今日から活用できる「コントロールの一括操作」について分かりやすく解説していきます。

【業務効率化】VBAの記事を見る 

個別指定から卒業してコントロールをループ処理する

通常、フォームのテキストボックスを空にするには、各コントロールの名前を個別に指定する必要があります。

しかし、VBAにはフォーム上に配置されたパーツ(コントロール)を「ひとまとめのグループ」として扱う便利な仕組みが用意されています。この仕組みを「Controlsコレクション」と呼びます。

コピペで使える一括リセットのサンプルコード

ここでは「全テキストボックスを一括で空にするコード」をご紹介します。

Private Sub btnReset_Click()
    Dim ctrl As Control   
    ' フォーム内のパーツ(コントロール)を1つずつ取り出してループ
    For Each ctrl In Me.Controls
        ' 取り出したパーツの種類が「テキストボックス」かどうかを判定します
        If TypeName(ctrl) = "TextBox" Then
            ' テキストボックスだったら、中身を空にします
            ctrl.Value = ""
        End If
    Next ctrl

    MsgBox "すべての入力をリセットしました!", vbInformation, "完了"
End Sub

ポイント

このコードの最大のメリットは、入力項目が増加してもコードを一切書き直す必要がないという点にあります。

例えば、急な仕様変更で入力項目が30個だったところ、50個に増えたとします。1つずつ書いていた人は、追加で20行も書かなきゃいけません。

でも、このループ処理を使っていれば、コードはそのまま自動で50個分処理してくれます。これで修正にかかる時間は大幅に削減され、長期的な業務効率化へとつながります!

応用編:チェックボックスも一括でOFFにする方法

テキストボックスだけじゃなく、設置されているチェックボックスも同時に全部リセットしたい!」という時もありますよね。

これもとても簡単です。先ほどの TypeName(ctrl) = “TextBox”の部分を”CheckBox”に変えるだけで対応可能です。

もし「特定のグループだけ操作したい」という場合は、パーツの「タグ(Tagプロパティ)」を利用する応用技もありますが、まずはこのTypeNameをマスターするだけで、日々の事務作業の効率は劇的に上がります。

ぜひ活用してみてください!

【業務効率化】VBAの記事を見る 


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でしたが、年間100万円以上節約していました。
株式投資で年間360万円以上投資し、iDeCoも併用しています。
総資産はアッパーマス層に到達しました。
資格は日商簿記3級を持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、生産性を高めるITスキルについて発信しています。

生活を豊かにするため、高配当株投資で年間配当金60万円をめざしています。
現在の年間配当金は30万円ほどです。

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました