• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EDateエラーの回避コードをおしえてください)

EDateエラー回避コードとは?Excelマクロ初心者のための質問

このQ&Aのポイント
  • Excel2007でマクロ作成中の初心者です。セルG2の1か月前の日付が、セルM5と同じときは、「計算済みです」としてそれ以外は、更新しますか?のコードを作成中ですが、If EDateのところで「コンパイルエラー」が発生します。EDateエラー回避のコードを教えてください。
  • EDate関数を使用したExcelマクロの作成中に発生する「コンパイルエラー」を回避するためのコードを教えてください。セルG2の1か月前の日付がセルM5と同じ場合は「計算済みです」として、それ以外の場合には更新しますか?のメッセージボックスを表示させるコードです。
  • Excel2007でマクロを作成中の初心者です。セルG2の値を1か月前の日付にし、セルM5と比較して同じ場合は「計算済みです」として、それ以外は更新のメッセージボックスが表示されるコードを作成中ですが、If EDateの部分で「コンパイルエラー」が発生してしまいます。EDateエラー回避のためのコードを教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • jin34
  • ベストアンサー率80% (17/21)
回答No.2

If WorkSheetFunction.EDate(Range("G2").Value, -1) = Range("M5").Value Then で通ると思いますが。。。 それでもだめならmyMsg=...の行に途中改行が入っていて半角スペース&アンダーバーがないとか。

aitaine
質問者

お礼

ご回答ありがとうございます。教えていただいたコードで完璧にできました。他のサイトでEDateは使えないという情報があったんで早合点してしまいました。ごめんなさい。

その他の回答 (1)

  • jin34
  • ベストアンサー率80% (17/21)
回答No.1

SUM関数みたいにワークシートに入力して使う関数はワークシート関数と呼ばれていて、 EDATE関数もそれに当たります。 これをマクロで使うときには関数の頭にWorkSheetFunction.を付けます。 ここではWorkSheetFunction.Edate(...となります。 ちなみにワークシートにこれを入力して使うときには、 エラーが出るとセルに”VALUE!"みたいな表示が出るだけですが、 マクロの場合は今回のようにコードの実行がストップしますので、 エラー回避するコーディングが必要になります。 がんばってください。

aitaine
質問者

補足

VBAではEDATE関数はつかえず、かわりにDateAddが使えるそうです。やってみましたが、またまたエラー発生です。 どうすればいいのでしょうか。 If DateAdd("m", -1, Range("G2").Value = Range("M5").Value Then

関連するQ&A