VBAと名前付き範囲を活用して、入力後に自動でクリアされるExcelフォームを作成する方法

ExcelでVBA(Visual Basic for Applications)と名前付き範囲を組み合わせると、データ送信後に入力欄が自動的にクリアされる「自己クリア型フォーム」を作成できます。これにより、複数のレコードを連続して素早く入力する場面でも、毎回手動で入力内容を削除する手間がなくなり、作業効率が大幅に向上します。
本記事では、従業員情報を入力し、「Database」シートにデータを保存した後、フォームを自動的に初期化する仕組みを、ステップごとにわかりやすく解説します。
ステップ1:ワークシートの構成を整える
まずはフォームとデータベースとなる2つのシートを準備します。
- 新しいExcelブックを開きます。
- 「Sheet1」を「Form」という名前に変更します。
- Formシートに以下のようなレイアウトを作成します。

- 各ラベルの隣にあるセル(B2~B5)がデータ入力用の空白セルになります。
Databaseシートの準備
- 新しいワークシートを挿入し、「Database」という名前に変更します。
- 1行目に以下の見出しを入力します。
- 氏名(Name)
- 部署(Department)
- 給与(Salary)
- 入社日(Start Date)
- 登録日時(Entry Date)

ステップ2:名前付き範囲を作成する
名前付き範囲を利用すると、VBAからセルを参照するときのコードが読みやすく、保守もしやすくなります。ここでは、フォームの各入力セルに対して名前を付けていきます。
- セルB2を選択します。
- 数式バー左側の「名前ボックス」に Name と入力します。
- Enter キーを押して確定します。

- 同じ要領で残りのセルにも名前を付けます。
- B3 → Department
- B4 → Salary
- B5 → StartDate
名前付き範囲の確認方法
- 「数式」タブをクリックし、「名前の管理」を選択します(ショートカットキーは Ctrl+F3)。
- すべての名前付き範囲が正しく登録されているか確認します。
- 確認できたら「閉じる」をクリックします。

ステップ3:フォームにボタンを配置する
送信ボタンの追加
- Formシートを開きます。
- 「開発」タブ → 「挿入」 → 「フォームコントロール」の中から「ボタン」を選択します。

- シート上でドラッグしてボタンを描画します。
- マクロ名を求められたら SubmitandClearForm と入力し、「OK」をクリックします。

- ボタンを右クリックし、「テキストの編集」を選択します。

- 表示名を「送信してフォームをクリア」など、わかりやすい文字列に変更します。

クリアボタンの追加
- 同じ手順でもう1つボタンを挿入します。
- マクロ名には ClearForm を指定します。
- ボタンの表示名を「フォームをクリア」に変更します。

ポイント: 「開発」タブが表示されていない場合は、「ファイル」→「オプション」→「リボンのユーザー設定」で「開発」にチェックを入れれば有効化できます。
ステップ4:VBAコードを記述する
- 「開発」タブ → 「Visual Basic」を選択してVBE(Visual Basic Editor)を開きます。
- メニューの「挿入」→「標準モジュール」を選択します。

- 以下のVBAコードをコピーして貼り付けます。
SubmitandClearForm マクロ(送信+クリア)
Sub SubmitandClearForm()
Dim ws As Worksheet
Dim dbSheet As Worksheet
Dim lastRow As Long
Dim formValid As Boolean
' シートの参照を設定
Set ws = ThisWorkbook.Sheets("Form")
Set dbSheet = ThisWorkbook.Sheets("Database")
' Databaseシート内の次の空行を取得
lastRow = dbSheet.Cells(dbSheet.Rows.Count, 1).End(xlUp).Row + 1
' フォームのデータをDatabaseシートへ転記
dbSheet.Cells(lastRow, 1).Value = Range("Name").Value
dbSheet.Cells(lastRow, 2).Value = Range("Department").Value
dbSheet.Cells(lastRow, 3).Value = Range("Salary").Value
dbSheet.Cells(lastRow, 4).Value = Range("StartDate").Value
dbSheet.Cells(lastRow, 5).Value = Now() ' 登録日時のタイムスタンプ
' フォームをクリア
ClearForm
' 完了メッセージを表示
MsgBox "従業員データを正常に登録しました!", vbInformation, "成功"
' カーソルを氏名フィールドに戻す
Range("Name").Select
End Sub

コードの解説:
- Formシート上の名前付き範囲から入力値を取得します。
- そのデータをDatabaseシートの次の空行に、タイムスタンプ付きで書き込みます。
- ClearFormマクロを呼び出してフォームの入力欄を初期化します。
- 登録完了の確認メッセージを表示し、カーソルを「Name」フィールドへ移動させます。
ClearForm マクロ(クリア専用)
Sub ClearForm()
' 名前付き範囲を使ってすべての入力欄をクリア
Range("Name").ClearContents
Range("Department").ClearContents
Range("Salary").ClearContents
Range("StartDate").ClearContents
' カーソルを先頭のフィールドに戻す
Range("Name").Select
End Sub

コードの解説:
- Formシート上のすべての入力欄(Name・Department・Salary・StartDate)の内容を削除します。
- カーソルを「Name」フィールドへ戻すことで、次の入力にすぐ取りかかれるようにします。
ステップ5:自動クリアフォームをテストする
- ブックを「Excel マクロ有効ブック(.xlsm)」形式で保存します。
- フォームの各入力欄にデータを入力します。
- 「送信してフォームをクリア」ボタンをクリックします。

- 入力データが自動的にDatabaseシートへ転記され、フォームの内容も自動的に消去されます。カーソルは最初のフィールドに戻り、すぐに次のデータ入力を始められる状態になります。

- 送信されたデータはDatabaseシートに正しく蓄積されていることを確認しましょう。

- さらに、「フォームをクリア」ボタンを使用すれば、送信済みかどうかにかかわらず、入力中のデータをすべて消去できます。

- クリア後はカーソルが最初のフィールドへ戻ります。

自己クリア型フォームを導入するメリット
- 効率化: 入力内容の手動削除が不要になり、作業時間を短縮できます。
- 精度向上: 繰り返し作業によるヒューマンエラーを減らせます。
- 快適性: ユーザー体験が向上し、データ入力スピードが上がります。
まとめ
以上の手順を実行すれば、VBAと名前付き範囲を活用した本格的な自己クリア型フォームが完成します。入力のたびにフォームが自動で初期化されるため、大量のデータ入力業務が格段にスムーズになります。名前付き範囲を採用することでコードの可読性と保守性が高まり、自動クリア機能によって効率的なデータ入力フローが実現します。ぜひ日々の業務に取り入れてみてください。
-
Excelでデータマッピングを行う5つの便利な方法【初心者向け完全ガイド】
データマッピングは、データ管理における最初の、そして最も重要なステップの一つです。Microsoft Excelを使えば、データマッピングを簡単に行うことができ、データ管理にかかる時間と手間を大幅に削減できます。この記事では、Excelでデータマッピングを行う方法を5つの実用的なテクニックで解説します。 データマッピングとは? データマッピングとは、あるデータベースのデータを別のデータベースにリンクさせるプロセスのことです。データ管理において非常に重要な作業であり、データマッピングを実行しておけば、片方のデータベースのデータを変更した際に、もう片方のデータベースのデータも自動的に更新されます。
-
Microsoft WordでQRコードを作成する方法|QR4Officeアドインの使い方を解説
スマートフォンとパソコンを連携させて、WhatsAppなどのアプリを使おうとしたことはありませんか?その際、「スマートフォンでWhatsAppを開き、画面に表示されているQRコードにかざしてください」という案内が表示されたはずです。実はQRコードは、ウェブサイトへのリンクとしても活用できる便利な仕組みです。 QRコードとは? QRコードとは、スマートフォンなどで読み取り可能な機械可読画像のことです。多数の黒い正方形(セル)が情報の断片を表しており、その配置によってデータが符号化されています。なお、「QR」は「Quick Response(クイックレスポンス)」の略で、高速に読み取れることが名