• ベストアンサー

VBAマクロ

マクロボタンをクリックしてマクロを実行する事において、 マクロの実行が1年に1回だけしか有効に実行されないようにする為には どのような記述をすれば良いでしようか。 2回目以降のクリックにおいては既に実行されている旨の表示が必要です。 宜しくお願いします。

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

  • ベストアンサー
回答No.3

私の回答が悪かったのですが、質問の内容が変わってしまいましたね。 Range("a1").Value = Format(Date, "yyyy/m/d クリックしました。") または Range("a1").Value = Format(Date, "yyyy/mm/dd クリックしました。") のようにすれば、2002/ と表示されます。 m/d,mm/dd は 2月や3日のように1桁の場合、02や03のように前0を付けるか付けないかです。 ★range("a1").value="=today()" はいりません。 --------------------------------------------------------------- --------------------------------------------------------------- ・・・ではなくて、 Sub test()   With Range("A1")     If (.Value = "" Or .Value < DateSerial(Year(Date), 1, 1)) Then 'システム日付の年の1月1日より以前ならば       '1年に1度の処理       'ここに記入       .Value = Date 'システム日付をA1セルにセット     Else       MsgBox "1年に1度しか処理できません"     End If   End With End Sub として、A1セルの書式を ユーザー設定で[yyyy/m/d "クリックしました"] のようにしたらどうでしょう?という事です。

hoshi7777
質問者

お礼

有り難うございました、大変助かりました。

その他の回答 (2)

回答No.2

もう1つの質問は、ここから来ているのでしょうか? 比較をしたい場合は、値が日付のみ入っている方が、比較しやすいと思いますので、 Range("a1").Value = Date のみマクロで記述し、 A1セルの書式を ユーザー設定で[yyyy/m/d "クリックしました"] のように見た目だけ変更した方が楽かもしれません。 =Today()を入れてしまうと、ブックを開くたびに、日付が変更されてしまうので、 Dateの方がよいかと思います。

hoshi7777
質問者

補足

有り難うございます、もう1つの質問の件ですが、 range("a1").value="=today()" range("a1").value= date & "クリックしました。" で 西暦が 02/ と二桁で表示されます、2002/ と4桁で表示出来るようにされるでしょうか。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

過去にいつ実行されたのかをファイルかレジストリ、もしくはセル上に年月日時分をもたせ、それと比較したらいいと思いますよ。

関連するQ&A