【マクロVBA】Month関数で対象・現在の月を取得・抽出する方法!抽出できない原因とエラーについて

日時操作

マクロVBAの機能にはMonth関数という、日時の月のデータを取得する関数があります
例えば「2022/8/5」であれば「8」を出力するといった内容です。

今回はそのMonth関数についての使用方法と実際の活用事例について紹介します。
さらには現在の月を出力する方法も説明したいと思います。

Month関数を使用する上で抽出・取得できないなど、不具合・エラーの対応についてもまとめてますので是非参考にしてみてください。

それでは見ていきましょう。




⬛︎こんなことができるようになる!

・対象セル・変数内の日付データから月を取得することができる
・現在の月を取得することができる

 

⬛︎関数の仕組み

変数・出力先=Month(対象となるデータ)

⬛︎Month関数の使用方法

ではここから実際にMonth関数の使用方法について紹介します。

・対象セルまたは変数の日付データから月を取得する

まずは対象セル・変数から月を取得する方法を見ていきましょう。
見本で下図のようなシートを用意しました。

B3に日時データの「2022/8/1」という日付データが入っています。
こちらをD3に出力してみましょう。

関数の仕組みは以下の通りです。
変数・出力先=Month(対象となるデータ)

ではこちらの構文に当てはめていきたいと思います。
変数・出力先はD3に出力するので「Cells(3, 4) 」となります。
対象データはB3の日時データを参照するので「B3」ですね。

実際に作成したプログラムはこちらです。

Sub 月の出力()

Cells(3, 4) = Month(Cells(3, 2))

End Sub

では実行してみましょう。
結果はこのようになります。

B3の「2022/8/1」から月を取得すると「8」となり
その結果を「D3」に出力
することができました。

先ほど説明した方法は直接、別のセルに出力する方法でしたが
変数へ格納することも可能です。

ではB3の日時から月を抜き出し、メッセージボックスで表示させてみましょう。
今回のB3の日付を「2023/3/14」にしてみましょう。

変数は何でも良いのですが変数「N」に格納したいと思います。

プログラムはこのようになります。

Sub 月の出力()

Dim N As Long

N = Month(Cells(3, 2))

MsgBox “対象の月は” & N & “月です”

End Sub

実行した結果はこちらです。

取得した月をメッセージボックスで表示することができました。

・現在の月を取得する

先ほどまではセルに入力してあった日付データから月を取得しましたが、
現在の月からも取得することができます

使用するのは「Now」です。
文字通り今という意味を持ちます。

使用方法は簡単で「Month(対象となるデータ)」の対象となるデータを「Now」に変えるだけです。
では見本で現在の月を変数Nに格納してメッセージボックスで出力してみましょう。

プログラムはこのようになります。

Sub 現在の月の出力()

Dim N As Long

N = Month(Now)

MsgBox “現在の月は” & N & “月です”

End Sub

実行した結果はこのようになります。

実行した際の月は6月なので「6」をメッセージで表示させることができました
もちろん、セルへの出力も可能です。

今回はB3に現在の月を出力してみましょう。
プログラムはこのようになります。

Sub 現在の月をセルに出力()

Cells(3, 2) = Month(Now)

End Sub

実行した結果はこのようになります。

B3に「6」が出力されました。
使用方法はシンプルなのでぜひ活用してみてください。

⬛︎月のデータを取得できないときの対処法とよくあるエラーについて

・月データを取得できない

こちらは変数名にMonthを使用していないか確認してみてください。
私自身も変数名は誰でもわかるように英語に直訳した単語を変数として使用してました。
なのでMonth関数を知る前までは月データを「Month」という変数に格納していました。

しかしこれでは関数と変数が重複してしまい、機能しなくなります。

実際にプログラムを用意しました。

Sub エラーの出る現在の月の出力()

Dim Month

Month = Month(Now)

MsgBox “現在の月は” & N & “月です”

End Sub

現在の月を「Month」という変数に格納するプログラムですが
実行するとエラーになります。

つまり変数名を「Monthdata」など「Month」にならないようにしてみてください。

・適切な結果が出力されない

こちらは変数に月を格納する際に
変数の形式がDateになっている可能性
があります。

日時データで「Date」の変数の形式を指定するのは正解ですが
Month関数での出力結果は数値なので「Date」では日時データに変換されてしまいます。

なので「Long」などの整数形式が好ましいです。

⬛︎公式の説明


わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟

Month 関数 (Visual Basic for Applications) | Microsoft Docs

⬛︎まとめ

いかがだったでしょうか。
日時データと合わせて管理している場合などに
Month関数で月を出力したり、絞り込みをおこなったり用途は様々です。

是非活用して月を取得してみてください

 

日時データから年月日または時分秒を取得する方法を下記リンクでまとめています。

【マクロVBA】日時データ系総まとめ!年月日時分秒を対象セルや変数、現在値から取得・抽出・出力する ► 独学エクセル塾 (dokugakuexcel.com)

それでは次回の記事でお会いしましょう。

コメント