VBAで日付を「yyyyMMdd」形式の文字列に変換しようとしてFormat(Date,”yyyyMMdd”)と記述した際に、yyyyMMddの部分が強調表示され「コンパイル エラー: 候補はステートメントの最後です」と表示されることがあります。このエラーはFormat関数自体が原因ではなく、記述場所や記号の扱い、コードの構文に問題があるケースが多くあります。この記事では、原因の確認方法と正しい記述例を詳しく解説します。
VBAのFormat関数でyyyyMMddがエラーになる主な原因
Format関数は、日付や数値を指定した形式に変換するためのVBA標準関数です。本来であれば、Format(Date,”yyyyMMdd”)という書き方は正常に動作します。
そのため、yyyyMMdd部分が強調表示される場合は、Format関数の使い方ではなく、その前後のコードに構文上の問題がある可能性があります。
例えば、文字列を囲むダブルクォーテーションが全角になっていたり、コピーしたコードに不要な記号が混ざっていたりすると、VBAは正しく解析できません。
よくある原因1:ダブルクォーテーションが全角になっている
VBAでは文字列を指定するとき、半角のダブルクォーテーション(”)を使用する必要があります。
例えば以下のようなコードは正しく動作します。
Dim todayText As String
todayText = Format(Date, "yyyyMMdd")
一方で、Webサイトや文章ソフトからコピーした場合、以下のような全角記号になることがあります。
todayText = Format(Date,“yyyyMMdd”)
見た目は似ていますが、VBAでは別の文字として扱われるため、コンパイルエラーの原因になります。
よくある原因2:Format関数の前の行に構文ミスがある
VBAのコンパイルエラーは、実際の原因がエラー表示された場所の直前にあることも多くあります。
例えば、前の行で文字列を閉じ忘れている場合、次の行にあるFormat(Date,”yyyyMMdd”)が問題のあるコードとして表示されることがあります。
例として、以下のようなコードではエラーになります。
MsgBox "今日の日付は
todayText = Format(Date, "yyyyMMdd")
この場合はFormat関数ではなく、1行目の文字列の閉じ忘れが原因です。
よくある原因3:Format(Date,”yyyyMMdd”)を記述する場所が間違っている
VBAでは、コードを書く場所によって使用できる構文が決まっています。SubやFunctionの外側に処理コードを書いている場合もコンパイルエラーになります。
正しい例は、以下のようにプロシージャ内に記述します。
Sub Test()
Dim d As String
d = Format(Date, "yyyyMMdd")
MsgBox d
End Sub
モジュールの宣言部分などに直接処理を書いていないか確認してください。
yyyyMMdd形式の日付を取得する正しい使い方
Format関数を使えば、現在の日付を8桁の数字形式で取得できます。
例えば、2026年8月6日の場合、Format(Date,”yyyyMMdd”)の結果は「20260806」になります。
ファイル名に日付を付けたい場合や、データ管理用の日付コードを作成したい場合などによく利用される形式です。
例として、以下のようにファイル名へ利用できます。
Dim fileName As String
fileName = "売上データ_" & Format(Date, "yyyyMMdd") & ".xlsx"
それでもエラーが出る場合の確認ポイント
Format(Date,”yyyyMMdd”)自体が原因ではない場合、次の項目を順番に確認すると原因を特定しやすくなります。
- ダブルクォーテーションが半角になっているか
- yyyyMMddの前後に不要な文字が入っていないか
- Format関数の前の行に文字列の閉じ忘れがないか
- コードがSubやFunctionの中に記述されているか
- 変数名や関数名に予約語を使っていないか
特に、コピーしたコードで発生する場合は記号の種類や見えない文字が原因になっていることが多いため、一度手入力し直す方法も有効です。
まとめ|Format(Date,”yyyyMMdd”)は正しいが周辺コードを確認する
VBAのFormat(Date,”yyyyMMdd”)は、日付を8桁形式へ変換する正しい記述方法です。yyyyMMddが強調されてコンパイルエラーになる場合は、Format関数ではなく構文や記号の問題である可能性が高いです。
まずはダブルクォーテーションの種類、直前のコード、記述場所を確認してください。特にコピー&ペーストしたコードでは、見た目では分からない文字の違いによってエラーが発生することがあります。
正しい構文で記述すれば、Format関数は日付処理やファイル名作成など幅広い場面で便利に利用できます。


コメント