こんにちは! 健史です。
Excelマクロをボタンから実行しようとボタンを作成したけれど、
・ネット上の解消方法を試してみたけど、やはり動かない!
①.マクロの設定 - 警告を表示してすべてのマクロを無効にする
②.ActiveXコントロールやマクロなどのアクティブコンテンツがブロックされた場合、すべてのアプリケーションにメッセージバーを表示する
③.ファイルを開き直す
④.マクロの内容が間違っていないか再度チェック ← 単体では実行できるのに
⑤.その他いろいろやってみる
とお困りの方へ、解消して動くようになった2つの方法を紹介します。
マクロをボタンから実行できるようにする方法
1.いずれの方法も、まずは[OK]ボタンを押して、実行前の状態に戻す
マクロを作成し、その後ボタンを作成した状態
2.ボタンを[右クリック] → [マクロの登録(N)]
マクロ名を登録する方法
1.表示されている作成済みの実行したいマクロを[クリック]
2.クリックして選択した内容が[マクロ(M)]にセットされたことを確認して[OK]ボタンを[クリック]
[OK]ボタンを必ず[クリック]します!
[キャンセル]や[x][で閉じたり、Excel画面に切り替えてボタンを押しても動きません。
3.ボタン以外のどこかのセルを[クリック]
4.ボタンを[クリック]すると、マクロが実行される
サンプルは1~10の値を合計するプログラムで、11番目に計算された"55"が表示されます。
ボタン用のマクロを作成する方法
1.[新規作成(N)]を[クリック]
ボタン用のプログラム記述画面が開く
2.[module1.]とピリオドまで記述するとModule1内のプログラムがリストアップされるので、クリックする
小文字で[module1.]と入力しても自動整形される
3.ボタン以外のどこかのセルを[クリック]
4.ボタンを[クリック]すると、マクロが実行される
サンプルは1~10の値を合計するプログラムで、11番目に計算された"55"が表示されます。
ボタンからマクロを実行できなかった理由
・ボタンの作成方法について、間違った認識を間違いと思わずにいた
ことが原因でした。
Excelの[マクロの記録]やExcel-VBAでコーディングしたマクロ=プログラムをボタンから実行するときのボタンの作成方法を間違えていました。
[開発(L)]-[挿入(I)]-[ボタン(フォームコントロール)(B)]からマウスを使ってボタンを配置後、開いた以下の画面において(※1)
・マクロ名の[マクロ名.xlsm!ボタン1_Click]は、自動で付くボタン名なんだろうなぁ
・そして 下ウィンドウに作成した実行したいマクロ名が入っているし
・このまま[OK]ボタンを押せば、ボタンから下ウィンドウのマクロが実行されるのだろう
と思っていましたが、これが間違いの始まりでした。
自動で付くマクロ名[マクロ名.xlsm!ボタン1_Click]というマクロ=プログラムを作成していませんよネ。
作成していない・実体のないマクロを実行しようとしているので、エラーが発生するのでした。
ここは、マクロ名を自動で作成しないで、
・マクロ名欄を空白にしておき
・「マクロ一覧から実行するマクロを選択して下さい」旨の固定メッセージなり指示を促す
ということをして頂ければ幸いと思います。
ここは作成した実行したいマクロを選択する画面であって、マクロが1つしかなくても、
・マクロ一覧から作成した実行したいマクロを選択
・マクロ名に入ったことを確認
・[OK]ボタンで確定
しなければならないのです。
※1:[開発]タブを表示させる方法
Excel上でファイル(F)-オプション(T)から[リボンのユーザ設定]から、画面の右[リボンのユーザ設定(B)]で「開発」にチェックを入れる
最後に
私のパソコンではExcelVBAを始めるに際し、冒頭に記載した設定変更せずに動作しました。ボタンからの実行がうまくいかなくて調べてみましたが不要なことでした。
セキュリティにとても厳しい組織であればExcelマクロの実行を制限していて上記対応が必要なこともあると思いますが、ほとんどは対応せずに動作すると思います。
一方、ネット上で当事象への対応方法として、今回の「作成方法を理解しておらず、間違っていた」ことへの明確な対応記事を見つけることはできませんでした。
原因は「ボタンの作成方法を正しく理解しておらず、間違っていたこと」ですが、このエラーで悩ましいのは、原因に対するエラーメッセージが適切でない、原因を特定しずらい、いや、特定できないに等しいことにあると思います。
<マイクロソフト様へ>
1人でも多くの方が、このエラーへの対処方法を検索しなくても解消できますよう、改善をご検討頂ければ幸いです。
コメント
同じ症状で困っていました。この記事に救われました。
hsgwさん
健史です。
コメントありがとうございます。
良かったです!
お役に立ててとてもうれしいです。
VBA初心者です。こちらの記事にたどり着いて助かりました!
作成したマクロが単体だったので登録出来ているものだと勘違いしてました・・・
ありがとうございました!
alulun さん
健史です。
申し訳ありません、コメントを頂いておりましたが、返信が遅れ
失礼致しました。
コメントありがとうございました。
解消して良かったです!