日付をセルの値から日だけ取り出して表示するVBAマクロ

DAY関数 コマンドボタン
セルの日付から日だけ切り取る
スポンサーリンク

エクセルで日付を取り扱う事って多いのですが、例えば「7/1」と入力して「7月1日」と表示させて使いますか?

もちろん使うと思いますが、日にちだけ取り出して「1」って表示させたい事ありませんか?

その場合、エクセル関数Dayを使って別のセルへ記入しますか?それとも書式設定で日にちだけ表示させますか?

とりっぷぼうる
とりっぷぼうる

シンプルにセルに入力した日付から日だけ取り出して、コマンドボタンに表示してみましょう。

スポンサーリンク

Day関数と引数Date関数をアレンジする

VBAマクロを利用して現在の日付データを年・月・日をそれぞれ別々に取り出して表示するには下記をそれぞれ利用します。

  • 年データはYear関数
  • 月データはMonth関数
  • 日データはDay関数

現在の日にちを取得する

そこで日付だけを取り出したいな~と思ってDay関数を使ったら、当たり前ですが、今日2020年7月28日なので・・・

いつものようにユーザーフォームに配置したコマンドボタンに表示させるには、このようなVBAコードを書きます。

Day関数とDate関数を使うVBA

Private Sub CommandButton1_Click()
UserForm1.CommandButton1.Caption = Day(Date)
End Sub

VBA解説
  1. コマンドボタン1が押されたら
  2. ユーザーフォーム1のコマンドボタン1の表示名を今日の日付の日だけにする
  3. マクロ記録終了

当然ながらこのようにコマンドボタンの表示が「28」なりました。

ちなみにDay(Date)の部分をDateのみにすれば、「2020/7/28」とコマンドボタンに表示されます。

指定したセルの日付を取得する

それでは実際にやりたかったどこかのセルに「2020年7月1日」と入力して、このセルの値を取得してコマンドボタンの表示を日にちだけ「1」と表示させましょう。

セルD2に「2020年7月1日」と入力した場合で、ユーザーフォームに配置したコマンドボタンに「1」とだけ表示させます。

セルの値から日にちを取得する

Private Sub CommandButton1_Click()
UserForm1.CommandButton1.Caption = Day(Range(“D2”).Value)
End Sub

VBA解説
  1. コマンドボタン1が押されたら
  2. ユーザーフォーム1のコマンドボタン1の表示名をセルD2に入力されている日付の日だけにする
  3. マクロ記録終了

現在の日付を表す”Date”を”(Range(“D2”).Value)”に代えて指定した日付を取得しました。

とりっぷぼうる
とりっぷぼうる

これができれば、次にやってみたいのが翌日ですよね。

スポンサーリンク

翌日や前日をVBAマクロで表示する

先ほど「2020年7月1日」の日にちだけを切り取ってコマンドボタンに「1」と表示したので、今度は2つ目のコマンドボタンに翌日の「2」と表示させたくなりますよね。

DateAdd関数の基本書式

その為には、日時に時間を加算するDateAdd関数を使って、翌日を計算させますが、基本的な使い方は・・・

DateAdd(単位, 時間, 日時)

この基本的な使い方で、翌日をコマンドボタンに表示するならば、

DateAdd関数で翌日

Private Sub CommandButton2_Click()
UserForm1.CommandButton2.Caption = DateAdd(“d”, 1, Date)
End Sub

VBA解説
  1. コマンドボタン4が押されたら
  2. ユーザーフォーム1のコマンドボタン2の表示を今日の日付に1日足す
  3. マクロ記録終了

これで、今日の日付2020年7月27日に1日足した「2020年7月28日」が表示されます。

指定したセルの翌日を表示させるVBA

では先ほどのセルD2が2020年7月1日を「1」と表示させたので、別のコマンドボタンには翌日の「2」を表示させませしょう。

翌日を表示させるVBA

Private Sub CommandButton2_Click()
UserForm1.CommandButton2.Caption = Day(DateAdd(“d”, 1, Range(“D2”)))
End Sub

VBA解説
  1. コマンドボタン1が押されたら
  2. ユーザーフォーム1のコマンドボタン1の表示名をセルD2に入力されている日付に1を足して日だけの表示にする
  3. マクロ記録終了

指定したセルの前日を表示させるVBA

今日・明日とできたならば、昨日(前日)もマスターしたいですよね。

では先ほどのセルD2が2020年7月1日を「1」と表示させたので、別のコマンドボタンには前日の2020年6月30日、「30」を表示させませしょう。

翌日が「1」なので、勘のいい方ならばわかりますよね、そうです「-1」とするだけなんです。

前日を表示させるVBA

Private Sub CommandButton2_Click()
UserForm1.CommandButton2.Caption = Day(DateAdd(“d”, -1, Range(“D2”)))
End Sub

この方法を応用することで、西暦では簡単にできるのに和暦になると難しかったリストボックスに和暦でリスト化させることも可能になります。

スポンサーリンク

コマンドボタンを並べてカレンダーをつくる

セルD2に2020年7月1日が入力されているのを読み取って各コマンドボタンに、日だけ表示できるようになったならば、綺麗に並べたらカレンダーを作ることができるようになりますね。