コレクションページ

エクセルマクロ起動ボタン作成

エクセルマクロをエクセルシートにボタンを設けてマクロを実行できるようにしたいと思います。
ココでは今まで作成した3つのマクロをボタンを使って起動したいと思います。
やり方は色々とあるので他でも調べていただき、自分に合ったやり方をしてください。
こちらのページも参考になれば幸いです。

1・作成したマクロを準備

エクセルのお勉強(HOME)」の「エクセルマクロの関数呼び出し」を参照ください。
このページに記載してある3つのマクロを使用します。

2・ボタンを作成します

2-1・開発→挿入→ボタン(フォームコントロール)を選択します。
Excelマクロ

2-2・シートの何処かでクリックします。マクロの登録ウィンドウが表示されるので、ボタンと紐づけするマクロを選びOKを押します。
Excelマクロ

2-3・マクロと紐づけされたマクロボタンが作成されます。
Excelマクロ

2-4・ボタンの大きさと、ボタン名を付けます。
Excelマクロ

2-5・その他の残りのマクロのボタン2つを(2-1~2-4を参考にして)作成します。
Excelマクロ

3・リセットする関数を記述

作成されたマクロを実行すると、セルB1とA2に文字が残ってしまいます。
以下のマクロを関数Sub 連続処理()のEnd Subの下に記載します。

(例)
'*****************************
'リフレッシュ
'*****************************
Sub リフレッシュ()
   Dim 列, 行 As Variant        '列、行セルの位置データ

   列 = 2               '列初期値セット
   行 = 1               '行初期値セット

 Range(Cells(行, 列), Cells(行 + 1, 列 - 1)).Select '範囲選択
 Selection.ClearContents             '選択範囲クリア
 Range("A1").Select      'A1セルを選択する
End Sub

(解説)
・Sub リフレッシュ()
関数の名前です。Sub ***()で***が関数名になります。
・Dim 列, 行 As Variant
物(数字)を入れる箱をイメージしてください。
ココでは列と行という名前の箱を用意します。(数値をいれるエリアを定義します。)
・Range(Cells(行, 列), Cells(行 + 1, 列 - 1)).Select
セルの範囲を選択します。A1からB2の範囲を示しています。ココではわざと難しく記載しています。
・Selection.ClearContents
選択されたエリア(セル)をクリアします。
・Range("A1").Select
選択セルを定位置(A1)に指定します。
・End Sub
Sub リフレッシュ()の終了を意味します。

※このリフレッシュのマクロ起動ボタンも作成しましょう。

4・ブレークポイントを設定しましょう

リフレッシュマクロを記述すると以下の右側のようになり、関数名の左側でマウスをクリックすると行の色が変わり●が付きます。
ここがブレークポイントとなります。プログラムを走らせると停止する部分です。ココでは4ヶ所にブレークポイントを設定してみましょう。
Excelマクロ


5・ボタンを押してプログラムを実行してみましょう

画面を2つに分けて表示てみてください。動作が見れます。
まずリフレッシュボタンを押してみましょう。リフレッシュ関数でブレークします。ボタンとうまくリンクできていることが分かります。
「F8」を押下していくと左側のエクセル画面で動作が見れます。やってみてください。
Excelマクロ
※他のボタンも押してみて確認してみてください。上のボタンから順に行うと良いでしょう。
また、リフレッシュ関数を以下のように連続処理内の一番最初に呼び出すようにカスタマイズすると良いでしょう。

(例)
'*****************************
'連続処理
'*****************************
Sub 連続処理()

  Call リフレッシュ     'セルクリア
  Call 指定セルライト    '指定セルライト関数呼び出し
  Call 指定セルリードライト '指定セルリードライト関数呼び出し

End Sub

6・ブレークポイントを外してプログラムを実行してみましょう

●のついている所でマウスをクリックすると、●が消えブレークポイントが外れます。
ブレークポイント無しでボタンを押してマクロを実行してみましょう。
既にここまでで、ブレークしながら動作確認済みなのでちゃんと動くはずです。

★POINT

このように関数を分け、ボタンを付けて動作させればフォーマットの決まった資料などはボタン一つで出来てしまいます。