マクロの実行を1クリックで!フローティングボタンをユーザーフォームで作る

commandbuttoneyecatch

マクロの実行ボタンをフローティングボタンとして設置します。
エクセルワークシート上への設置では、スクロール時にボタンが画面から消え不便です。
フローティングボタンにすれば問題解決、利便性が向上します。

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

エクセルVBAでプログラム(マクロ)を作って、定型操作を簡単にできても、

マクロを実行するときは、そのままでは ” たった1クリックで実行 ” というわけにはいきません。

トコトン簡単にしたい派は、このままではちょっとまだナットクできない人も多いかも・・・

マクロの実行を1クリックで行いたい

マクロの実行を1クリックで行いたければ、どんな方法がありますか?

「Worksheet上にコマンドボタンを作ってマクロ登録すればいい。」

ねこ氏

うささん

「そうすると、設置場所で下敷きになったセルが使えなくなる。とか、画面スクロールしたらボタンが見えなくなるとか。」問題もあり・・・

「・・ん~ん それもイマイチですねェ。」

ねこ氏

せっかくだから、

定型作業をマクロで自動化したいのであれば、ただそれだけではなく、

マクロを実行する時点の手間も少なくすることを考えておきましょう。

ショートカットキーでも、

『Alt』+『F8』を押して、マクロウインドウを出現させて、上下スクロールキーからの実行ボタン

これでも面倒と思う人は、少なからずいます。

求めているアクションは1クリックです。

フローティングボタンをユーザーフォームで作る

Worksheet(ワークシート)上でフローティングする実行ボタンがあれば、問題は一挙に解決します。

フローティングする実行ボタンの作成という手間が、最初に余分にかかってしまいますが、

一旦作成すれば、後は ” 楽チンそのもの ” です。

STEP1

最初にフローティングボタンのデザインを行います。

ベースとなるのがユーザーフォームとActiveXベースのコマンドボタンです。

STEP2

フローティングボタンを押して何を実行するのか、その「中身」となるマクロを準備します。

すでに、出来ている場合は、このSTEP2の項目は不要です。

STEP3

フローティングボタンが押された時に「中身」のマクロが実行されるように、

フローティングボタンに関連頭けるVBAコードを記述します。

STEP4

STEP3までに完了した作業だけでは、実際に作業中のエクセルブックを操作しても、

フローティングボタン(ユーザーフォーム)が表示されません。

このエクセルブックに対して、『何らかの操作がされた時』に、

フローティングボタン(ユーザーフォーム)が表示されるように仕組みます。

STEP5

STEP4まで全ての準備完了で、実際に作動させてみます。

「この様な感じになります。」ということを確認します。

STEP1 ユーザーフォームでボタンを作る

このSTEPの内容は、100%フローティングボタンのデザイン(ビジュアル)に関することになります。

基本、好き勝手にデザインしていただいて結構です。

ですので、これからのものは一例にすぎません。

Visual Basic Editor(ビジュアルベーシックエディタ VBE)の画面を表示して

挿入からユーザーフォームを選択クリックします。

commandbutton000a
矢印下001

ユーザーフォームが表示されたら、ツールボックスから「コマンドボタン」を選択します。

commandbutton002a
矢印下001

ユーザーフォーム上に、好きな大きさでコマンドボタンを設置してください。

commandbutton003a
矢印下001

コマンドボタンを設置したら、

表示からプロパティウインドウを選択し、クリックします。

commandbutton004a
矢印下001

プロパティウインドウが表示されましたら、「オブジェクト名」と「Caption」と「Font」を変更します。

変更名は適宜行ってください。

commandbutton005a

STEP2 クリックで実行されるマクロを準備する

このSTEP2では、フローティングボタンを押して何を実行するのか、その「中身」となるマクロを準備します。

すでに、出来ている場合は、このSTEP2の項目は不要です。

VBEの画面で、挿入から標準モジュールを選択して、クリックします。

commandbutton007a
矢印下001

今回は例題ですので、簡単にコードを作成しました。

選択したセルに「★」マークを付けて、次に斜め1つ下に選択セルが移動します。

コード
Sub ★マークスタンプ()
    ActiveCell.Value = "★"
    ActiveCell.Offset(1, 1).Select
End Sub

VBAコード参考記事
ここの説明で出てくるVBAコードの参考にしていただける記事です。

commandbutton008a

STEP3 実行されるマクロとボタンを連携させる

フローティングボタンが押された時にマクロが実行されるように、

フローティングボタンに関連頭けるVBAコードを記述します。

コード
Private Sub 実行ボタン_Click()
    Module1.★マークスタンプ
End Sub

ユーザーフォーム(実行ボタン)モジュールに関連付けのコードを記述します。

ボタンをクリックしたというイベントに対して、Callステートメント(表記省略)でModule1に記述した「★マークスタンプ」プロシージャーが発動されます。

VBAコード参考記事
ここの説明で出てくるVBAコードの参考にしていただける記事です。

commandbutton009a

STEP4 ユーザーフォームを画面表示するコード設置

STEP3までで、フローティングボタンのセッティング作業は完了しました。

後はコードを呼び出せばフローティングボタンをしようすることは可能です。

このSTEP4ではもう少し使い易くするために、

実行させたいマクロが記述されているエクセルBOOKを操作したときに、

「フローティングボタン」が自動で画面表示されるようにプログラムします。

内容的にはごく簡単です。

今回は、Sheet1が表示されたときに「フローティングボタン」が自動で画面表示されるようにしています。

Sheet1のシートモジュールに記述します。

コード
Private Sub Worksheet_Activate()
  実行ボタン.Show vbModeless
End Sub

commandbutton010a

Sheet2やSheet3でも同じように表示させたいという時は、上の同じコードを、シートモジュールにコピペしてください。

エクセルBOOKが開かれたときに、この「フローティングボタン」を表示させたいという時は、ブック(ThisWorkbook)モジュールに記述することになります。

コード
Private Sub Workbook_Open()
  実行ボタン.Show vbModeless
End Sub

と記述します。

STEP5 完成するとこうなる!

作成作業が終了して、実際に動かしてみます。

ほんとにボタンだけです。フローティングもキッチリと機能しています。

commandbutton011a

実行ボタンを2回連続で押してみました。

commandbutton012a

STEP4の作業のところで、

「実行ボタン.Show vbModeless」と記述しましたが、実は、これが結構キモになっています。

ユーザーフォーム(フローティングボタン)表示状態では、

「vbModeless」にしておかないと、シート上のセル操作が出来なくなってしまいます。

間違っても「.Show vbModeless」ではなく「.Show」だけの記述にしてはいけません。シート操作が出来なくなってしまいます。

マクロ実行のためのフローティングボタン設置 のまとめ

マクロを実行するために、その実行ボタンをフローティングボタンにしておくと結構便利なことが多いです。

「画面スクロールでも、実行ボタンが無くならない」というのは魅力です。

簡単作業ですので、本体マクロ作成時には、同時に、フローティング実行ボタンも付け加えておきましょう。

エクセルVBAの独習には動画学習という方法もあります。 目と耳両方を使って学習することでさらに勉強効率を上げることもできます。

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

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

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

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min