- ベストアンサー
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
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
' 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 は消えません。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17070)
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版を作ることになるだろう(略)。
お礼
詳しい解説ありがとうございます。