【VBA】ユーザーフォームで入力した値を履歴として記録する方法|日時も自動保存

目次

経緯

ExcelでVBAを使ってユーザーフォームを作成している中で、
**「フォームで入力した内容を記録として残したい」**という場面がありました。

たとえば、誰かがフォームを使って何かを登録した際に、

  • いつ登録されたのか
  • どんな内容が入力されたのか

を履歴として自動で記録しておきたくて、今回この機能を実装しました。

実現したい仕様

  • ユーザーフォームに入力したテキストを、Excelシートに蓄積形式で保存
  • 日時も一緒に記録され、あとで確認できる
  • ボタンを押すと、フォームが閉じて、履歴だけがシートに追加される

フォーム構成と想定

  • ユーザーフォームにテキストボックスが2つTextBox_1TextBox_2
  • 実行用のボタンが1つ(CommandButton_run
  • 記録先は Sheet1S列・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円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。

[Kindle Unlimited 読み放題プランをチェックする]

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次