Excel 2010 でフォーム コントロールなどの Enabled プロパティを False に設定しても、登録されたマクロが実行される

現象
Microsoft Excel 2010 で、フォーム コントロールおよび埋め込みオブジェクトの Enabled プロパティを False に設定しても、登録されたマクロが実行されます。
原因
この現象は、Excel 2010 から描画オブジェクトの機能拡張に伴い実施された仕様変更の結果、Enabled プロパティによるマクロの実行を抑制することができなくなったために発生します。
回避策
この現象を回避するには、以下の例のように、処理の冒頭にマクロが実行されないよう制御文を追加してください。
Sub ボタン1_Click()' ----- 回避策 : ここから -----    If Sheets("Sheet1").Buttons("ボタン 1").Enabled = False Then Exit Sub' ----- 回避策 : ここまで -----    MsgBox "ボタン 1 がクリックされました"End Sub
状況
この動作は仕様です。
詳細

問題の再現手順

  1. Excel 2010 を起動します。
  2. [開発] タブの [挿入] をクリックし、[ボタン (フォーム コントロール)] を挿入します。
  3. [マクロの登録] で [新規作成] をクリックします。
  4. 標準モジュールに以下のマクロを入力します。
    ' ボタンのクリックイベントSub ボタン1_Click()    MsgBox "ボタン 1 がクリックされました"End Sub' ボタンを非活性化Sub SetDisable()    Sheets("Sheet1").Buttons("ボタン 1").Enabled = FalseEnd Sub' ボタンを活性化Sub SetEnable()    Sheets("Sheet1").Buttons("ボタン 1").Enabled = TrueEnd Sub
  5. マクロ "SetDisable()" を実行して、[ボタン 1] を非活性化します。
  6. [Sheet1] へ戻り、[ボタン 1] をクリックします。

結果

ボタン1_Click() が実行されます。
プロパティ

文書番号:2394653 - 最終更新日: 09/29/2016 15:34:00 - リビジョン: 3.0

Microsoft Excel 2010

  • kbharmony kbexpertiseinter kbexpertiseadvanced kbtshoot kbprb KB2394653
フィードバック