【アプリ版】サポートOS変更のお知らせ

Excel2007でマクロ作成中の初心者です。
1)Aブックに次のマクロを書いてます。
Sub データをクリアする()
Dim list, SheetName
Const EXCEPT_NAME = "計算 番号 明細"
For Each SheetName In ActiveWorkbook.Worksheets
If InStr(EXCEPT_NAME, SheetName.name) = 0 Then
Sheets(SheetName.name).Activate
クリア範囲
End If
Next
End Sub
--------------------------------
Sub クリア範囲()
Range("AM13:AQ13").Select
Selection.ClearContents
End Sub

2)上のマクロは、Bブック上で実行します。
Bブックのマクロ実行は、最初のボタンクリック1回のみです。
(このBブックが閉じられ保存されるまで)
なぜなら、クリアした部分に、新しいデータを入れるからです。
誤って2回目のボタンクリックでも、マクロ実行しないようにしたいです。
せっかく入力した新しいデータを消去しないためです。
このようなコマンドボタンを作るにはどうしたらよろしいでしょうか?

gooドクター

A 回答 (6件)

>足したところ、なぜかその部分が黄色くなり、


>「変数が定義されていません」というコンパイルエラーが発生します。
あ、もしかして、ボタンがActiveXコントロールになってないのでは?
http://www.officelabo.net/excel/list2.html

なお、前の回答にある、「ボタンの名前」はこのリンクの2番目の画像に出ているプロパティボックスの一番上の枠内の太字で書かれた文字です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/05/08 19:41

>足したところ、なぜかその部分が黄色くなり、


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

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


質問に書かれたマクロのどこかに(マクロを実行するボタンの名前がCommandButton1だとすると)

CommandButton1.Enabled = False

を付け足すだけです。

この回答への補足

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

補足日時:2013/05/07 07:20
    • good
    • 1

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

この回答への補足

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

補足日時:2013/05/06 07:59
    • good
    • 0

コマンドボタンで行う処理の先頭で、既に実行されたのか、まだなのか、を判断する。


既に実行されたのなら、ExitSubで処理を抜ける。
まだなら、「処理されたよ」という記録を残す。

「まだだよ」「処理されたよ」をどういう形で表すかはアナタが決めてください。

この回答への補足

ご教示くださったように自分なりにコードを作ってみました。これでうまく作動しているようにみえますが、このコードにフラッグを立てるとすると、どのように修正したらよろしいでしょうか?

Sub データを消去()
Sheets("明細").Select
If Range("D35").Value = 0 Then
MsgBox "既にクリアしてあります"
Exit Sub
Else
データクリア
MsgBox "データをクリアしました"
End If
End Sub

補足日時:2013/05/06 07:57
    • good
    • 0

どっかに実行中フラグを持たせればいいんじゃないかなぁ



たとえば、どっかのセルにON、OFF(0 or 1)を書いて、
処理の頭でONにして、かつ、ONだとすぐExitする分岐を設ける。
で、処理の最後でOFFにする。

みたいなのはどうでしょうか?

この回答への補足

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

補足日時:2013/05/05 19:12
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング