重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Excel 2013のシート上に、フォームコントロールのチェックボックスが配置してあり、
そのチェックボックスにマクロが登録されていますが、一時的にマクロを実行したくない場合、
VBAで Shapes("Check Box 1").ControlFormat.Enabled = False とすると、
チェック出来なくなり、マクロも実行出来なくなっていいのですが、
チェックボックスをダブルクリックすると登録したマクロが実行出来てしまいます。

これを実行出来なくする方法を、お判りの方・いいアイデアのある方がいらしたら教えて下さい。

こうゆう仕様なのでしょうか?........ 図形でも同じ動きでした。
ActiveXのチェックボックスだと出来そうなのは分るのですが、
フォームコントロールのチェックボックスで制御できないものでしょうか?

宜しくお願いします。

A 回答 (1件)

こんにちは。



フォームコントロールで、起動を止める方法は、今のところ2つ浮かびます。

1.一般的な方法
CheckBox に取り付けているマクロはどのようなものにしても、以下のように、フラグを付けて、離脱するか決めさせます。

Private Const flg As Boolean = True '←このようにして、マクロの実行を止めます
Sub チェック1_Click()
If flg Then Exit Sub  'Trueの場合はマクロを実行しない
Range("A1").Value = Range("A1").Value + 1
End Sub

2. このようにして、マクロの登録を回避させ空白にして、「代替えテキスト」に移してしまいます。
タブルクリックしても、メッセージなども出てきません。戻す時は、逆の方法を取ります。

Sub Macro1()
Dim bln As Boolean
Dim chkb As Object
For Each chkb In ActiveSheet.CheckBoxes
 chkb.ShapeRange.AlternativeText = chkb.OnAction  'マクロの命令を退避させる
 chkb.OnAction = ""
Next
End Sub

chb.OnAction の部分にダミーマクロを入れてあげても可能ですが、元のマクロコードに戻すためには、どこかにコードは置いておかなくてはなりません。また、chb.OnAction = "+" & chb.OnAction でもよいのですが、ダブルクリツクすると、「マクロが見つからない」というエラー表示をします。
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。
大変、参考になりました、代替テキストを使うという手があるとは、思いもしませんでした。
ダブルクリックそのものを止める方法がもしかしたら、あるのかな?と思ったのですが、
やはり、一般的な方法のフラグで処理するのがよさそうです。

お礼日時:2015/08/05 12:35

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