• ベストアンサー

VBA ある日付の指定

やりたいこと 例:今日の日付が4/1ならA1セルに『A』という文字を入れる というIF文を書きたいのですができません。 この場合、2022/4/1という限定的な指定方法ではなく 4/1なら(2023年や2024年でも指定できる)という形で コードを書きたいのですができませんでした。 すいませんが回答よろしくお願い致します。 sub test() if date = 4/1 then  range("A1").value="A" end if end sub

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (789/1648)
回答No.1

' Sub Macro1() '   If Format(Date, "M/D") = "4/1" Then     [A1] = "A"   Else     [A1] = ""   End If End Sub ・4/1 は 4÷1 と判断されます。 4月 1日と判断されません。 ・Else ~ を入れていかないと、他の日になっても、A は消えません。

TaikooniQ1
質問者

お礼

詳しい解説ありがとうございます。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

VBAをやる段階になって、エクセルの「日付シリアル値」のことの理解ができてないように見えるが、勉強が必要では。初見ならWEB照会せよ。 エクセルでは、日付シリアル値は1900年1月1日以後の何番目の日に当たるかの整数値で、それがセルの値として、持たれている(そして表示形式の適用で、2022/4/1とかの見てくれになっている),ので、見た目は何の関係も見えない。 2022/4/1 ー>44652 2021/4/1ー>44287 2020/4/1 ー>43922 ーー だから、日付を扱うエクセル関数のお世話になって、月と日が4と1であることを判定しないといけないのだ。 こういう「コード付け」の問題は、読んだ当初は、VLOOKUP関数の利用を考えたが、本件はケースが多いので、それは不適だろう。 IF文で判別しかないだろう。 関数で書けば、=IF(AND(MONTH(A1)=4,DAY(A1)=1),"A","")のようなものの、VBA版を作ることになるだろう(略)。