「昨日まで問題なく動いていたExcelマクロが、なぜか今日になったら動かない…」
Excelで業務効率化を図っている方なら、一度はこんな冷や汗をかく経験があるかもしれません。マクロが動かないと、焦りますよね。
実は先日、まさにこの現象に遭遇しました。色々と原因を切り分けていくと、意外なところに落とし穴が。それは、デュアルディスプレイ環境と「ActiveX コントロール」のボタンの相性問題でした。
今回は、このニッチで厄介な問題の切り分けから、具体的な解決策までを詳しくご紹介します。
事件発生!マクロ実行ボタンが沈黙
いつものようにマクロを組んだExcelファイルを開き、実行用のボタンをクリック。しかし、うんともすんとも言いません。マクロが実行される気配が全くないのです。
「あれ?マクロ無効にでもなってる?」
最初に疑ったのは、基本的なExcelの設定です。例えば下記などですね。
【試したこと①】一般的なトラブルシューティング
まずはマクロやActiveXが動作しない時の定番チェック項目を確認しました。
- トラストセンターのActiveX設定
- [ファイル] > [オプション] > [トラストセンター] > [トラストセンターの設定] > [ActiveXの設定]
- 「先に確認メッセージを表示してから、最低限の制限を適用してすべてのコントロールを有効にする」に設定。
- → 改善せず
- ファイルのプロパティ
- 対象のExcelファイルを右クリック > [プロパティ]
- 「セキュリティ:このファイルは他のコンピュータから取得したものです…」のメッセージと「許可する」チェックボックスがあるか確認。
- → そもそもこの項目が表示されておらず、設定変更できず。
- トラストセンターのマクロ設定
- [マクロの設定]で「警告を表示してすべてのマクロを無効にする」になっていることを確認。
- メッセージバーの設定
- [メッセージバー]で「アクティブコンテンツがブロックされた場合、すべてのアプリケーションにメッセージバーを表示する」になっていることを確認。
これらの設定はすべて問題ありませんでした。マクロを有効にするためのメッセージバーも表示され、コンテンツの有効化は済んでいます。にもかかわらず、ボタンは反応しません。
原因の切り分けで見えてきた「ある環境」
基本的な設定に問題がないとなると、次に疑うべきは「環境」です。
- マクロのコードは正しいか?
→ VBE(Visual Basic Editor)を開き、手動でマクロを実行(F5キー)すると、問題なく動作しました。コード自体にエラーはなさそうです。 - 他のPCでは動くか?
→ 別のPCで同じファイルを開くと、問題なくボタンが動作しました。
この時点で、問題はファイルやマクロのコードではなく、私のPC環境に依存する何かであることが濃厚になりました。
そして、ふと気づきます。
「そういえば最近、作業効率化のためにデュアルディスプレイにしたな…」

まさかと思いつつ、Excelのウィンドウをメインディスプレイに移動させてボタンをクリックしてみると…
動きました!
再度、サブディスプレイにウィンドウを移動してクリックすると、また沈黙。
原因はこれでした。サブディスプレイ側でExcelを開いていると、マクロ実行用の「ActiveX コントロール」のボタンが機能しなかったのです。
なぜActiveXボタンは動かなかったのか?
この現象は、Excelのバージョン、Windowsのアップデート、グラフィックドライバなどが複雑に絡み合って発生する、環境依存の不具合だと考えられます。結構古い記事などでもActiveXがサブディスプレイ側で動作しないといった事象があったようです。
ActiveXコントロールは、Windowsの機能を深く利用するリッチな部品ですが、その分、こうした環境の変化に影響を受けやすいという側面があります。根本的な原因を特定して解消するのは、非常に困難なケースが多いのが現実です。
解決策:さよならActiveX!「フォームコントロール」を使おう
根本原因の解決が難しいなら、アプローチを変えましょう。
幸い、Excelにはボタンを設置する方法がもう一つあります。それが「フォームコントロール」です。
ActiveX コントロール | フォームコントロール | |
特徴 | 高機能、プロパティが豊富 見た目のカスタマイズ性が高い | シンプル、互換性が高い 安定して動作する |
弱点 | 環境依存の不具合が起きやすい | 機能やデザインがシンプル |
今回のケースのように、マクロを実行するだけのシンプルなボタンであれば、互換性が高く安定している「フォームコントロール」への乗り換えが最も確実で手早い解決策です。
【簡単3ステップ】フォームコントロールのボタンに乗り換える方法
マクロのコードを1行も変更する必要はありません。ボタンを入れ替えるだけです。
Step 1: 開発タブからボタンを挿入
- Excelのリボンから[開発]タブをクリックします。(※表示されていない場合は、[ファイル] > [オプション] > [リボンのユーザー設定]で[開発]にチェックを入れてください)
- [挿入]をクリックし、「フォームコントロール」の中から[ボタン]を選択します。

Step 2: ボタンを配置してマクロを登録
- シート上のボタンを置きたい場所でドラッグして、ボタンを作成します。
- ボタンを配置すると、自動的に「マクロの登録」ダイアログボックスが開きます。
- ここで、このボタンで実行したいマクロを選択し、[OK]をクリックします。
Step 3: 古いボタンを削除
新しいボタンが問題なく動作することを確認したら、今まで使っていた古いActiveXのボタンは削除してしまいましょう。(ActiveXコントロールを削除するには、開発タブの「デザインモード」をオンにしてから選択・削除します)
たったこれだけで、デュアルディスプレイのどちらの画面にExcelがあっても、問題なくマクロが実行できるようになりました!
まとめ
今回のExcelマクロトラブルから得られた教訓は以下の通りです。
- デュアルディスプレイ環境では、ActiveXコントロールが正常に動作しない場合がある。
- 一般的なトラストセンターの設定を見直しても解決しないときは、PC環境(特にディスプレイ環境)を疑ってみる。
- 原因不明の不具合に直面したら、安定性の高い「フォームコントロール」への乗り換えが有効な解決策になる。
もし、あなたも同じように「Excelボタンが動かない!」と悩んでいたら、ぜひ今回の「フォームコントロールへの乗り換え」を試してみてください。2画面は手放せないのでActiveXを手放しましょう(笑)