エクセルでその日の日付を入力するとき、ワークシート上ではtoday関数を使うかと思いますが、 today関数のないVBAでは、どうするのがよいでしょうか?
また、日付の表示形式を指定したいときはどうすればよいでしょう?
特に、yyyymmdd形式のように、日付のデフォルト表示設定にない形式にしたいときなど、困ってしまうこともあるかもしれませんね。
本記事では「VBAで日付をyyyymmdd表示する方法」について解説します。
1.VBAでtoday関数の代わりになる関数は?
こんにちは。エクセルマン・ブリーダーのしもむぎ(@re_znd13)です。
エクセルで日付を入力したいときによく使うのがtoday関数ですね。
毎回日付を入力する必要がなくなるので、多用する方も多いのではないでしょうか。
ただ、このtoday関数で注意したいのは、VBAにはない、ということなんです。
例えば、書類の入力作業をマクロ使って自動化しよう、なんてVBAコードを書き出したとします。
入力した=マクロを実行した日付を書類の右上に入力するといったとき、today関数は使えないので、別の関数を使う必要があるんですね。
VBAではDate関数というのが代わりに用意されています。
アクティブセルに今日の日付を入れたい場合は以下のようなコードでOKです。
Sub todayの代わり()
ActiveCell.Value = Date
End Sub
2.yyyymmdd表示の指定方法
2.1 セルの書式設定で指定する方法
決まったセルに日付を入力するという場合、セルの書式設定を予め決めておくのもひとつですね。
対象のセルを選択して、右クリックメニューからセルの書式設定を選択します。
表示形式のタブを開くと、分類というのがありますから、日付というところから種類を選んでみましょう。
ただし、このデフォルト設定にはyyyymmddのような形式は用意してくれてありませんので、ご注意。
そういうときは、ユーザー定義というところで作ってしまいましょう。
2.2 VBAで指定する方法
前節のような方法も、書類の形なんかが決まっていればよいのですが、少し応用力には欠けていますね。
VBAで日付入力のときに指定してしまうのがスマートだと思います。
こんなときに使えるのがFormat関数です。
以下のようにVBAコードを記載することで、アクティブセルに日付を入力しつつ、その表示形式を指定できます。
Sub yyyymmdd表示()
ActiveCell.Value = Format(Date, "yyyymmdd")
End Sub
yyyymmddのところはyymmddなどに変更も可能。
個人的には6桁の日付をよく使うので、yymmdd形式の方を多用しています。
3.まとめ
本記事では、 「VBAで日付をyyyymmdd表示する方法」 について解説しましたが、いかがでしたか?
エクセルでは、日付は多く使用するものですので、ぜひ押さえておきたいテクニックですね。