VBAで日付を自動取得してユーザーフォームに表示する
今日の日付って様々な場面で使用しませんか?
エクセルでは、TODAY関数を使ってセルに入力しておいてユーザーフォーム表示させる方法と、VBA関数のDate関数を使用してユーザーフォーム表示させる方法があります。
使用しているパソコンの設定から現在の日付・時刻を取得しますので、パソコン自体の設定が誤っていたら、当然ながら誤取得しますよ。
また、VBAでパソコン自体の日付・時刻設定変更はできませんので、パソコン右下の時計をクリックして設定して下さいね。
今日の日付を取得する
TODAY関数(エクセル関数)
エクセル関数のひとつで今日の日付を取得することができる関数で、セル自体に書式設定をしていない初期状態は「標準」になっているので、2020/1/31と表示されます。
また、セルの書式設定で「数値」を選択するとシリアル値での表示になり、1900年1月1日を「1」として通算何日目かを表示するので、43861と表示されます。
この式を日付表示したいセルに書くだけで完成です。
Date関数(VBA関数)
VBAコードで日付を取得するにはDate関数を使う事で、ワークシートのセルにかかわることなく今日の日付を取得できるようになります。
また、Date関数で取得した日付をセルに転記してから再度取得することももちろんできます。
たったのこれだけを「挿入」から「標準モジュール」をクリックして追加した後に、VBAコードを記述するだけですよ。
それでは次に、ユーザーフォームに配置したラベルに今日の日付を表示させますが、エクセルを開いた時に自動的にユーザーフォームを表示させて日付表示させるVBAコードを記述してみましょう。
今度は、VBAコードを書く場所を変えたので、この方法ならばエクセルを開くと自動的にユーザーフォームに今日の日付が表示できるようになります。
上記画像をクリックして表示されたように自動的にエクセルが作業を行ってくれるので楽ですよね。
ここでは、エクセルを開いた瞬間に作業を行ってくれましたが、タイマー機能を使って何秒後にっていう技もありますが、ここでは省略しますので興味のある方は下記をご覧くださいませ。
次にユーザーフォームを切り替えて、一旦取得した日付をセルA1に転記して再取得してラベル表示させてみましょう。
このようにすればちょっとめんどくさい作業をしていますが、クリック1回で一瞬で完了します。