• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:最初の1回のみにボタンクリックでマクロ実行する)

Excel2007でマクロ作成中の初心者です。

このQ&Aのポイント
  • Excel2007でマクロを作成中の初心者です。データをクリアするマクロを書いており、特定の範囲を除いてシート上のデータをクリアする処理です。
  • マクロは別のブックで実行されます。このブックのマクロは最初のボタンクリックのみ実行されるようにしたいです。新しいデータを入力した後でも誤ってクリアされないようにするためです。
  • コマンドボタンを作成して、そのクリックイベントを制御することで解決できます。ボタンをクリックしたときにマクロが実行され、2回目のクリックでは実行されないようにします。

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

  • ベストアンサー
  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.6

>足したところ、なぜかその部分が黄色くなり、 >「変数が定義されていません」というコンパイルエラーが発生します。 あ、もしかして、ボタンがActiveXコントロールになってないのでは? http://www.officelabo.net/excel/list2.html なお、前の回答にある、「ボタンの名前」はこのリンクの2番目の画像に出ているプロパティボックスの一番上の枠内の太字で書かれた文字です。

aitaine
質問者

お礼

今ご教示されたことに十分注意払って実行したところうまくできました。ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (5)

  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.5

>足したところ、なぜかその部分が黄色くなり、 >「変数が定義されていません」というコンパイルエラーが発生します。 ボタンの名前と書かれている名前がくい違っているか、Falseなどにつづり間違えがあるか、のいずれかと思われます。

すると、全ての回答が全文表示されます。
  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.4

>EnabledプロパティをFALSEにする方法がわかりません 質問に書かれたマクロのどこかに(マクロを実行するボタンの名前がCommandButton1だとすると) CommandButton1.Enabled = False を付け足すだけです。

aitaine
質問者

補足

足したところ、なぜかその部分が黄色くなり、「変数が定義されていません」というコンパイルエラーが発生します。

すると、全ての回答が全文表示されます。
  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.3

コマンドボタンがActiveXコントロールなら、マクロの中で コマンドボタンのEnabledプロパティをFALSEにすればよいです。

aitaine
質問者

補足

EnabledプロパティをFALSEにする方法がわかりません

すると、全ての回答が全文表示されます。
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

コマンドボタンで行う処理の先頭で、既に実行されたのか、まだなのか、を判断する。 既に実行されたのなら、ExitSubで処理を抜ける。 まだなら、「処理されたよ」という記録を残す。 「まだだよ」「処理されたよ」をどういう形で表すかはアナタが決めてください。

aitaine
質問者

補足

ご教示くださったように自分なりにコードを作ってみました。これでうまく作動しているようにみえますが、このコードにフラッグを立てるとすると、どのように修正したらよろしいでしょうか? Sub データを消去() Sheets("明細").Select If Range("D35").Value = 0 Then MsgBox "既にクリアしてあります" Exit Sub Else データクリア MsgBox "データをクリアしました" End If End Sub

すると、全ての回答が全文表示されます。
  • junpecho
  • ベストアンサー率9% (1/11)
回答No.1

どっかに実行中フラグを持たせればいいんじゃないかなぁ たとえば、どっかのセルにON、OFF(0 or 1)を書いて、 処理の頭でONにして、かつ、ONだとすぐExitする分岐を設ける。 で、処理の最後でOFFにする。 みたいなのはどうでしょうか?

aitaine
質問者

補足

フラグを持たせ=? どっかのセルにON、OFF(0 or 1)を書く=? 処理の頭でON=? ONだとすぐExitする分岐を設ける=? 処理の最後でOFF=? すいません意味が理解できないんです。具体的に教えていただけませんか?

すると、全ての回答が全文表示されます。

関連するQ&A