Office
 Computer >> コンピューター >  >> ソフトウェア >> Office

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

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

ExcelでVBA(Visual Basic for Applications)と名前付き範囲を組み合わせると、データ送信後に入力欄が自動的にクリアされる「自己クリア型フォーム」を作成できます。これにより、複数のレコードを連続して素早く入力する場面でも、毎回手動で入力内容を削除する手間がなくなり、作業効率が大幅に向上します。

本記事では、従業員情報を入力し、「Database」シートにデータを保存した後、フォームを自動的に初期化する仕組みを、ステップごとにわかりやすく解説します。

ステップ1:ワークシートの構成を整える

まずはフォームとデータベースとなる2つのシートを準備します。

  • 新しいExcelブックを開きます。
  • 「Sheet1」を「Form」という名前に変更します。
  • Formシートに以下のようなレイアウトを作成します。

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

  • 各ラベルの隣にあるセル(B2~B5)がデータ入力用の空白セルになります。

Databaseシートの準備

  • 新しいワークシートを挿入し、「Database」という名前に変更します。
  • 1行目に以下の見出しを入力します。
    • 氏名(Name)
    • 部署(Department)
    • 給与(Salary)
    • 入社日(Start Date)
    • 登録日時(Entry Date)

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

ステップ2:名前付き範囲を作成する

名前付き範囲を利用すると、VBAからセルを参照するときのコードが読みやすく、保守もしやすくなります。ここでは、フォームの各入力セルに対して名前を付けていきます。

  • セルB2を選択します。
  • 数式バー左側の「名前ボックス」に Name と入力します。
  • Enter キーを押して確定します。

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

  • 同じ要領で残りのセルにも名前を付けます。
    • B3 → Department
    • B4 → Salary
    • B5 → StartDate

名前付き範囲の確認方法

  • 「数式」タブをクリックし、「名前の管理」を選択します(ショートカットキーは Ctrl+F3)。
  • すべての名前付き範囲が正しく登録されているか確認します。
  • 確認できたら「閉じる」をクリックします。

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

ステップ3:フォームにボタンを配置する

送信ボタンの追加

  • Formシートを開きます。
  • 「開発」タブ → 「挿入」 → 「フォームコントロール」の中から「ボタン」を選択します。

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

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

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

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

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

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

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

クリアボタンの追加

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

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

ポイント: 「開発」タブが表示されていない場合は、「ファイル」→「オプション」→「リボンのユーザー設定」で「開発」にチェックを入れれば有効化できます。

ステップ4:VBAコードを記述する

  • 「開発」タブ → 「Visual Basic」を選択してVBE(Visual Basic Editor)を開きます。
  • メニューの「挿入」→「標準モジュール」を選択します。

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

  • 以下の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

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

コードの解説:

  • Formシート上の名前付き範囲から入力値を取得します。
  • そのデータをDatabaseシートの次の空行に、タイムスタンプ付きで書き込みます。
  • ClearFormマクロを呼び出してフォームの入力欄を初期化します。
  • 登録完了の確認メッセージを表示し、カーソルを「Name」フィールドへ移動させます。

ClearForm マクロ(クリア専用)

Sub ClearForm()
 ' 名前付き範囲を使ってすべての入力欄をクリア
 Range("Name").ClearContents
 Range("Department").ClearContents
 Range("Salary").ClearContents
 Range("StartDate").ClearContents
 
 ' カーソルを先頭のフィールドに戻す
 Range("Name").Select
End Sub

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

コードの解説:

  • Formシート上のすべての入力欄(Name・Department・Salary・StartDate)の内容を削除します。
  • カーソルを「Name」フィールドへ戻すことで、次の入力にすぐ取りかかれるようにします。

ステップ5:自動クリアフォームをテストする

  • ブックを「Excel マクロ有効ブック(.xlsm)」形式で保存します。
  • フォームの各入力欄にデータを入力します。
  • 「送信してフォームをクリア」ボタンをクリックします。

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

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

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

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

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

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

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

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

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

自己クリア型フォームを導入するメリット

  • 効率化: 入力内容の手動削除が不要になり、作業時間を短縮できます。
  • 精度向上: 繰り返し作業によるヒューマンエラーを減らせます。
  • 快適性: ユーザー体験が向上し、データ入力スピードが上がります。

まとめ

以上の手順を実行すれば、VBAと名前付き範囲を活用した本格的な自己クリア型フォームが完成します。入力のたびにフォームが自動で初期化されるため、大量のデータ入力業務が格段にスムーズになります。名前付き範囲を採用することでコードの可読性と保守性が高まり、自動クリア機能によって効率的なデータ入力フローが実現します。ぜひ日々の業務に取り入れてみてください。


  1. Excelでデータマッピングを行う5つの便利な方法【初心者向け完全ガイド】

    データマッピングは、データ管理における最初の、そして最も重要なステップの一つです。Microsoft Excelを使えば、データマッピングを簡単に行うことができ、データ管理にかかる時間と手間を大幅に削減できます。この記事では、Excelでデータマッピングを行う方法を5つの実用的なテクニックで解説します。 データマッピングとは? データマッピングとは、あるデータベースのデータを別のデータベースにリンクさせるプロセスのことです。データ管理において非常に重要な作業であり、データマッピングを実行しておけば、片方のデータベースのデータを変更した際に、もう片方のデータベースのデータも自動的に更新されます。

  2. Microsoft WordでQRコードを作成する方法|QR4Officeアドインの使い方を解説

    スマートフォンとパソコンを連携させて、WhatsAppなどのアプリを使おうとしたことはありませんか?その際、「スマートフォンでWhatsAppを開き、画面に表示されているQRコードにかざしてください」という案内が表示されたはずです。実はQRコードは、ウェブサイトへのリンクとしても活用できる便利な仕組みです。 QRコードとは? QRコードとは、スマートフォンなどで読み取り可能な機械可読画像のことです。多数の黒い正方形(セル)が情報の断片を表しており、その配置によってデータが符号化されています。なお、「QR」は「Quick Response(クイックレスポンス)」の略で、高速に読み取れることが名