目次
経緯
ExcelでVBAを使ってユーザーフォームを作成している中で、
**「フォームで入力した内容を記録として残したい」**という場面がありました。
たとえば、誰かがフォームを使って何かを登録した際に、
- いつ登録されたのか
- どんな内容が入力されたのか
を履歴として自動で記録しておきたくて、今回この機能を実装しました。
実現したい仕様
- ユーザーフォームに入力したテキストを、Excelシートに蓄積形式で保存
- 日時も一緒に記録され、あとで確認できる
- ボタンを押すと、フォームが閉じて、履歴だけがシートに追加される
フォーム構成と想定
- ユーザーフォームにテキストボックスが2つ(
TextBox_1とTextBox_2) - 実行用のボタンが1つ(
CommandButton_run) - 記録先は
Sheet1の S列・T列・U列
- S列:TextBox_1の入力値
- T列:TextBox_2の入力値
- U列:登録日時(Now)
実装コード(VBA)
以下が、実行ボタンに設定するコードです。
Private Sub CommandButton_run_Click()
' ユーザーフォームを閉じる前に履歴を記録する
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "S").End(xlUp).Row + 1 ' S列の最後の行の次を取得
' 入力値と日時を記録
ws.Cells(lastRow, "S").Value = TextBox_1.Text
ws.Cells(lastRow, "T").Value = TextBox_2.Text
ws.Cells(lastRow, "U").Value = Now
' フォームを閉じる
Unload Me
End Sub
コードの補足
lastRowを使って、常に次の空き行に記録されるようになっています。Nowは、現在の日付と時刻を記録する関数です。Unload Meにより、実行後はフォームが自動で閉じられます。
応用のヒント
- ユーザー名や担当者名などの入力フィールドを追加することで、記録の信頼性が高まります。
Application.EnableEvents = Falseなどの処理を組み合わせれば、記録時のトリガー制御も可能です。
まとめ
- VBAでユーザーフォームの内容を履歴として記録するのは簡単に実現可能です。
- 日時も自動で保存でき、作業記録や報告履歴として活用できます。
- シンプルな仕組みで、業務の可視化や確認作業が効率化されます。
業務での履歴管理や、フォーム操作のログ取得などに、ぜひご活用ください。
技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。
気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
