マクロの実行を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コードの参考にしていただける記事です。

vbaoffseteyecatch Offsetプロパティの使い方。セルや選択範囲を移動するVBAコード

commandbutton008a

 

 

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

 

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

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

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

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

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

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

vbacalleyecatch Callステートメントはプロシージャーの部品化に必須項目 エクセル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の独習には動画学習という方法もあります。 目と耳両方を使って学習することでさらに勉強効率を上げることもできます。

Udemy1eyecatch エクセルVBA初級者がUdemyで動画学習する講座おすすめ5選と無料講座の上手な使い方。

 

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

vbastudyeyecatch002 エクセルVBAを独学で習得する!ために大切な7つのポイントを解説します

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

 

vbaborder1eyecatchVBAでセルに罫線を設定する 位置・線種・太さ・色vbarowseyecatchVBA Rowsプロパティの範囲選択と関連のメソッドvbadeleteeyecatchVBA DeleteとClearの使い分け 削除とクリアの違いを最速理解vbacurrentregioneyecatchCurrentRegionは範囲取得プロパティ 連続データをまとめて掴むSpecialCellseyecatchSpecialCellsメソッドは特定のセルを選択する多機能ツールVBAFunctioneyecatchFunctionプロシージャーの働きと使い方 ユーザー定義関数もここ知れOK!vbacalleyecatchCallステートメントはプロシージャーの部品化に必須項目 エクセルVBA最速理解vbacharactereyecatchaCharactersプロパティで文字列中の一部の文字の書式設定や加工をするvbafontsyseyecatcha文字の書式の設定方法 Fontプロパティで装飾操作ができるVBAFormateyecatchFormat関数を書式設定のテッパン関数にする!実務での書式と重要5例vbaintfixeyecatch数値の整数部分を完全分離 Int・Fix・Abs・Sign関数で出来る使い方vbarndeyecatchRnd関数で乱数を取得。使えない戻り値を加工して利用度を上げるVBAコードvbaroundupdowneyecatchRoundUpとRoundDown関数の使い方。数値の切り方に注意が必要ですvbaroundeyecatchRound関数の毒針。VBAで数値を四捨五入する時の注意点vbamaxminaveeyecatchMax・Min・Averageワークシート関数で最大値・最小値・平均を求めるvbainsteeyecatchInstr関数・InstrRev関数は文字列を検索する。ファイルパス取得に威力vbareplaceeyecatchReplace関数は文字列を置換・削除する利用度の高い関数vbaselectcaseeyecatchSelect Case 条件分岐の使い方。ステートメントの基本はコレ。VBAValeyecatchVal関数の使い方はデータ型不一致の解決策。値を文字列型から数値型へVBAStringeyecatchString関数の使い方は文字を指定した数だけ並べることが出来る

 

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