答え1
幸運なことに、VBA は必要ありません。実際、IF テストを必要としないさらにシンプルなアプローチがあります。
=DATE(YEAR(NOW()),MONTH(NOW())+(DAY(NOW())>2),2)
質問に基づいて月の 2 日をハードコードしましたが、セルから取得したり、元の期日から抽出したりすることもできます。
月の目標日を過ぎたかどうかをテストするのではなく、TRUE と FALSE がそれぞれ 1 と 0 として扱われるという事実を利用します。 は true または false のいずれかになるため、月の 2 日目を超えた場合、または超えていない場合の(DAY(NOW())>2)
ように扱われます。その日を過ぎた場合は、その月に追加されます。1
0
1
Excel は、12 月にこのことが発生した場合、月「13」を適切に処理します。翌年の 1 月に進みます。