Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » VBAで日付データを年・月・日に分解する

VBAで日付データを年・月・日に分解する

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「excel2010 マクロ 日付型のデータを年と月と日で分解する」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

Excel VBAで、日付データを年・月・日に分解するには、どのようなコードを書けばいいのかを探している方による検索です。

参考になりそうな簡単なマクロを3つご紹介しておきます。

[スポンサードリンク]

Year関数・Month関数・Day関数で日付データを分解する

ワークシート関数のYEAR関数・MONTH関数・DAY関数に慣れている方なら、以下のマクロが一番わかりやすいでしょう。

Sub 日付データを年月日に分解する1()

 Dim tmp As Variant

 tmp = ActiveCell.Value

 If IsDate(tmp) Then
  MsgBox Year(tmp)
  MsgBox Month(tmp)
  MsgBox Day(tmp)
 End If

End Sub

例えば「2016/2/14」という日付データの入力されているセルがアクティブな状態で上記のマクロを実行すると、
 2016
 2
 14
の順にメッセージボックスが表示されます。

ワークシート関数のYEAR・MONTH・DAYと同じスペルで、同じ動きをする関数がVBAにも存在しているのです。

Format関数で日付データを分解する

日付データを年・月・日に分解したあとに、何らかの書式設定を行うのなら、Format関数を使う方法もあります。

Sub 日付データを年月日に分解する2()

 Dim tmp As Variant
 
 tmp = ActiveCell.Value
 
 If IsDate(tmp) Then
  MsgBox Format(tmp, "yy")
  MsgBox Format(tmp, "mm")
  MsgBox Format(tmp, "dd")
 End If

End Sub

「2016/2/14」という日付データの入力されているセルがアクティブな状態で上記のマクロを実行すると、
 14
 02
 14
の順にメッセージボックスが表示されます。

ワークシート関数のTEXT関数に似ているのが、VBAのFormat関数です。

DatePart関数を使って日付データを分解する

ある日付が何週目なのか等を調べるのに使えるDatePart関数でも日付データを分解できます。

Sub 日付データを年月日に分解する3()

 Dim tmp As Variant
 
 tmp = ActiveCell.Value
 
 If IsDate(tmp) Then
  MsgBox DatePart("yyyy", tmp)
  MsgBox DatePart("m", tmp)
  MsgBox DatePart("d", tmp)
 End If

End Sub

例えば「2016/2/14」という日付データの入力されているセルがアクティブな状態で上記のマクロを実行すると、
 2016
 2
 14
の順にメッセージボックスが表示されます。

最終更新日時:2019-06-13 08:00

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » VBAで日付データを年・月・日に分解する

「VBA関数」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.