エクセルVBAで、シートにマクロ(プロシージャー)を実行させる、コマンドボタンを設置する2つの方法を紹介します。
また参考で、データクリアするボタン設置の場合の注意点も紹介します。
エクセルVBAのプログラムを実行するのに、ワークシート上に設置したボタンのクリックでワンポチっとで行いたい。
そんなボタンの簡単設置方法を紹介します。
こんにちは、じゅんぱ店長(@junpa33)です。




















コンテンツ
エクセルVBA コマンドボタンをシートに設置する2つの方法
エクセルVBAでコードを作成して、それをエクセル上で実行するには、
ショートカットキー「Alt+F8」でマクロダイアログが表示され、選択のマクロ名を確認して「Enterキー」になります。
先ず先ず簡単に起動できますが、今回はこの操作を、
「ボタンクリック」で一発起動しましょう。ということです。
ボタンを挿入するためには、エクセルの「開発」タブの「挿入」から行っていきます。
ボタンには
- フォームコントロール
- ActiveXコントロール
の2種類があります。
この2種類のボタンの設置方法を説明していく前に、
まず最初に、
ボタンクリックで、起動するプロシージャーを先に作っておく必要があります。
説明用に例題を設定します。
で使った例題を利用します。
このワークシートのSheet1にボタンを設置していきます。
フォームコントロールのコマンドボタンを設置します

ボタンを挿入するために、エクセルの「開発」タブの「挿入」で「ボタン(フォームコントロール)」を選択してください。

ボタンを選択するとカーソルが十字に変化しますので、配置したい位置に表示範囲を指定してください。
マクロの登録ダイアログが表示されますのでマクロ名リストから一つ選択することが出来ます。

例えば「クリアA」を選択します。
次にボタン名を変更します。ボタン上でマウスの右クリックになります。
メニューの中で「テキストの編集」を選択します。

ボタン名をクリアとします。次にボタン名のフォントスタイルを変更します。
マウス右クリックメニューで「コントロールの書式設定」を選択します。
ダイアログでお好きな設定にしてください。


この様にコマンドが埋められたボタンが完成しました。
ActiveXコントロールのコマンドボタンを設置します

ボタンを挿入するために、エクセルの「開発」タブの「挿入」で「コマンドボタン(ActiveXコントロール)」を選択してください。

ボタンを選択するとカーソルが十字に変化しますので、配置したい位置に表示範囲を指定してください。
コマンドボタンが表示されます。マウス右クリックメニューで「コードの表示」を選択します。

「コードの表示」を選択すると、「シートモジュール」が表示されます。
「コマンドボタンをクリックした場合」の ”空のコード” が表示されますので、
今回は、「Module1」から「クリアB」と「クリアC」プロシージャーを呼び出します。(複数呼び出しが可能になります。)

この時、エクセルシートでは、開発タブで「デザインモード」が選択状態になります。このモードでは、不用意にVBAが実行されないようになっています。
ボタンの題名を変更します。コマンドボタン上で右クリックメニューの「プロパティ」を選択します。

プロパティウインドウが表示されますので、「Caption」を「クリア」、「Font」をフォントダイアログでお好み選択します。
「FontColor」もお好みです。


仕上がりはこのようになりました。
今回設置したボタンでコマンドを実行する
フォームコントロールコマンドボタンを実際に押してみる
実行結果

正常にセットしたプロシージャー(マクロ)が実行されました。
ActiveXコントロールコマンドボタンを実際に押してみる
実行結果

こちらも正常にプロシージャーが実行されました。
クリアを実行するボタンを設置したいときの注意点
今回の例題として、シートをクリアするというケースを取り上げましたが、
注意しておいた方が良いポイントがあります。
同じワークシート上にクリアしたいデータと、ボタンを設置したケースで、
「画像」「図」などの挿入したオブジェクトも消去したい場合、
例題としてある「クリアE」プロシージャーで挿入オブジェクトを消すことになりますが、
Sub クリアE()
With Worksheets("Sheet1")
.DrawingObjects.Delete
End With
End Sub
これを実行すると、
設置した(コマンド)ボタンもろとも消去されてしまいます。
いわゆる「自爆スイッチ」になってしまいますので、十分注意してください。
フォームコマンドボタンの実行を「クリアE」に変更して実行すると・・・
実行結果

結果、見事に自爆しました。
コマンドボタンをシートに設置する方法のまとめ
この様に、マクロ(プロシージャー)実行ボタンを設置することは結構簡単です。
フォームコントロールコマンドボタンとActiveXコントロールコマンドボタンの違いは、
- 指定できるプロシージャー数が、フォームの場合は1つ、ActiveXの場合は複数個
- ActiveXの場合は、ボタンのプロパティを使える。またVBAコードを使ってカスタムできる。
という事かと思います。
ボタンを使って色々動きを設定するなら、
基本ユーザーフォームで行うのがメインになると思いますので、
シートにボタンを設置する場合、
多くのオプション機能を必要としないのなら、
簡潔に設置できるフォームコントロールの方がいいと思います。
短期間でエクセルVBAの独学習得を目指したいなら
エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。
けれども、
出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。
独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。
先人が行った勉強方法をあなたがそのまま利用すればよいということです。
独習のための大切な7つのポイントは、上記記事にて解説しています。
独習によるVBA習得のキーワードは、
出来るだけ多くの実例に触れること!
です。
正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。
ハッキリ言って、
本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、
手っ取り早く短期間習得できるというのは間違いないでしょう。
このサイトでよく使うVBAのコードのトピックを纏めています。
今回の記事はここまでです。 最後までご覧いただき有難うございました。