コマンドボタンをシートに設置する2つの方法

vbabuttoneyecatch

エクセルVBAで、シートにマクロ(プロシージャー)を実行させる、コマンドボタンを設置する2つの方法を紹介します。

また参考として、データクリアするボタン設置の場合の注意点も紹介します。

エクセルVBAのプログラムを実行するのに、ワークシート上に設置したボタンのクリックでワンポチっとで行いたい。

そんなボタンの簡単設置方法を紹介します。

こんにちは、じゅんぱ店長(@junpa33)です。

エクセルVBA コマンドボタンをシートに設置する2つの方法

vbabutttonp024

エクセルVBAでコードを作成して、それをエクセル上で実行するには、

ショートカットキー「Alt+F8」でマクロダイアログが表示され、選択のマクロ名を確認して「Enterキー」になります。

先ず先ず簡単に起動できますが、今回はこの操作を、

「ボタンクリック」で一発起動しましょう。ということです。

ボタンを挿入するためには、エクセルの「開発」タブの「挿入」から行っていきます。

ボタンには

  • フォームコントロール
  • ActiveXコントロール

の2種類があります。

この2種類のボタンの設置方法を説明していく前に、

まず最初に、

ボタンクリックで、起動するプロシージャーを先に作っておく必要があります。

説明用に例題を設定します。

vbacleareyecatch シートクリアーを目的のメソッド別にVBA最速理解

で使った例題を利用します。

vbabuttton001
vbabuttton002a

このワークシートのSheet1にボタンを設置していきます。

フォームコントロールのコマンドボタンを設置します

vbabuttton003

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

矢印下001
vbabuttton004

ボタンを選択するとカーソルが十字に変化しますので、配置したい位置に表示範囲を指定してください。

vbabuttton005a

マクロの登録ダイアログが表示されますのでマクロ名リストから一つ選択することが出来ます。

矢印下001
vbabuttton006a

例えば「クリアA」を選択します。

vbabuttton007

次にボタン名を変更します。ボタン上でマウスの右クリックになります。

メニューの中で「テキストの編集」を選択します。

矢印下001
vbabuttton008

ボタン名をクリアとします。次にボタン名のフォントスタイルを変更します。

マウス右クリックメニューで「コントロールの書式設定」を選択します。

vbabuttton009a

ダイアログでお好きな設定にしてください。

矢印下001
vbabuttton010a

この様にコマンドが埋められたボタンが完成しました。

ActiveXコントロールのコマンドボタンを設置します

vbabuttton011

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

矢印下001
vbabuttton012

ボタンを選択するとカーソルが十字に変化しますので、配置したい位置に表示範囲を指定してください。

vbabuttton013

コマンドボタンが表示されます。マウス右クリックメニューで「コードの表示」を選択します。

矢印下001
vbabuttton014

「コードの表示」を選択すると、「シートモジュール」が表示されます。

vbabuttton015

「コマンドボタンをクリックした場合」の ”空のコード” が表示されますので、

今回は、「Module1」から「クリアB」と「クリアC」プロシージャーを呼び出します。(複数呼び出しが可能になります。)

矢印下001
vbabuttton016

この時、エクセルシートでは、開発タブで「デザインモード」が選択状態になります。このモードでは、不用意にVBAが実行されないようになっています。

vbabuttton017

ボタンの題名を変更します。コマンドボタン上で右クリックメニューの「プロパティ」を選択します。

矢印下001
vbabuttton018

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

vbabuttton019

「FontColor」もお好みです。

矢印下001

仕上がりはこのようになりました。

今回設置したボタンでコマンドを実行する

フォームコントロールコマンドボタンを実際に押してみる

実行結果

vbabuttton021

正常にセットしたプロシージャー(マクロ)が実行されました。

ActiveXコントロールコマンドボタンを実際に押してみる

実行結果

vbabuttton022

こちらも正常にプロシージャーが実行されました。

クリアを実行するボタンを設置したいときの注意点

今回の例題として、シートをクリアするというケースを取り上げましたが、

注意しておいた方が良いポイントがあります。

同じワークシート上にクリアしたいデータと、ボタンを設置したケースで、

「画像」「図」などの挿入したオブジェクトも消去したい場合、

例題としてある「クリアE」プロシージャーで挿入オブジェクトを消すことになりますが、

VBA
Sub クリアE()
  With Worksheets("Sheet1")
      .DrawingObjects.Delete
  End With
End Sub

これを実行すると、

設置した(コマンド)ボタンもろとも消去されてしまいます。

いわゆる「自爆スイッチ」になってしまいますので、十分注意してください。

フォームコマンドボタンの実行を「クリアE」に変更して実行すると・・・

実行結果

vbabuttton023

結果、見事に自爆しました。

コマンドボタンをシートに設置する方法のまとめ

vbabutttonp025

この様に、マクロ(プロシージャー)実行ボタンを設置することは結構簡単です。

フォームコントロールコマンドボタンとActiveXコントロールコマンドボタンの違いは、

  • 指定できるプロシージャー数が、フォームの場合は1つ、ActiveXの場合は複数個
  • ActiveXの場合は、ボタンのプロパティを使える。またVBAコードを使ってカスタムできる。

という事かと思います。

ボタンを使って色々動きを設定するなら、

基本ユーザーフォームで行うのがメインになると思いますので、

シートにボタンを設置する場合、

多くのオプション機能を必要としないのなら、

簡潔に設置できるフォームコントロールの方がいいと思います。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。