エクセルVBAで、シートにマクロ(プロシージャー)を実行させる、コマンドボタンを設置する2つの方法を紹介します。
また参考として、データクリアするボタン設置の場合の注意点も紹介します。
エクセルVBAのプログラムを実行するのに、ワークシート上に設置したボタンのクリックでワンポチっとで行いたい。
そんなボタンの簡単設置方法を紹介します。
こんにちは、じゅんぱ店長(@junpa33)です。
- コントロールの配置
- チェックボックスのシート設置
- コマンドボタンのシート設置
- オプションボタンのシート設置記事編成
- ActiveXとフォームの両コントロールのオプションボタンをエクセルシートに手動設置する
- フォームコントロールのオプションボタンをエクセルシートにVBA配置する
- オプションボタンの設置手順
コンテンツ
エクセルVBA コマンドボタンをシートに設置する2つの方法
エクセルVBAでコードを作成して、それをエクセル上で実行するには、
ショートカットキー「Alt+F8」でマクロダイアログが表示され、選択のマクロ名を確認して「Enterキー」になります。
先ず先ず簡単に起動できますが、今回はこの操作を、
「ボタンクリック」で一発起動しましょう。ということです。
ボタンを挿入するためには、エクセルの「開発」タブの「挿入」から行っていきます。
ボタンには
- フォームコントロール
- ActiveXコントロール
の2種類があります。
この2種類のボタンの設置方法を説明していく前に、
まず最初に、
ボタンクリックで、起動するプロシージャーを先に作っておく必要があります。
説明用に例題を設定します。
シートクリアーを目的のメソッド別にVBA最速理解で使った例題を利用します。
このワークシートの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の独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。