ExcelVBAで作成したマクロを図形(オートシェイプ)に登録する方法をご説明します。
VBAの実行方法はVBEから直接実行や、ブックオープン時に呼び出したり、ユーザーフォームを作成して登録したりいくつか方法があります。
その中でもマクロを実行(呼び出し)する簡易的な方法が、図形に登録する方法です。
マクロやVBAの開発者や、詳しい方はVBEから直接実行しても問題ないかと思いますが、そうではない場合は図形を押すだけで実行出来ると使う方としては非常に便利ですので、ぜひ覚えてみてください。
その他の図形の操作については、下記記事をご覧ください。
- 図形(オートシェイプ)一覧と作成/追加する方法
- 図形(オートシェイプ)の位置やサイズを変更する
- 図形(オートシェイプ)を取得する方法
- 図形(オートシェイプ)を反転、回転させる方法
- 図形(オートシェイプ)の塗りつぶしを変更する方法
- 図形(オートシェイプ)の枠線の色や種類と太さを変更する方法
- 図形(オートシェイプ)にテキスト・文字列の入力方法
1.図形を作成する
まずはマクロの登録をするための図形を作成します。
マクロ実行用の図形の作成はわざわざVBAで作成する必要もありませんが、手動で作成する方法とマクロで作成する方法両方ご説明します。
手動で作成する
挿入タブの「図形」を選択します。

図形を選択すると図形の一覧が表示されますので、挿入したい図形を選択します。

今回は「正方形/長方形」を選択します。

図形を選択してからセルをクリックすると、クリックしたセルに図形が挿入されます。
あとは挿入された図形の塗りつぶしや枠線などの色やサイズを成形します。
サイズは枠線のドラッグでも可能です。
色の変更や枠線については、図形をアクティブにした状態で右クリックするか、書式タブを選択して変更します。
図形を右クリック

書式タブ

今回はサイズを高さ「1cm」、幅「3cm」、塗りつぶしの色を黒、枠線も黒に変更しました。
また、テキストの色を白の文字の種類をメイリオに変更して、「マクロ実行」と入力してます。

VBAで作成する
上記の手動で作成した図形をVBAで作る場合は次のように作成します。
詳細は「図形(オートシェイプ)一覧と作成/追加する方法」をご覧下さい。
Sub Sample1()
'Type,Left,Top,Width,Heightを指定
With ActiveSheet.Shapes.AddShape(msoShapeRectangle, 100, 100, 85, 30)
.Fill.ForeColor.RGB = RGB(0, 0, 0) '塗りつぶし
.Line.ForeColor.RGB = RGB(0, 0, 0) '枠線
With .TextFrame 'テキスト
.HorizontalAlignment = xlHAlignCenter '水平位置
.VerticalAlignment = xlVAlignCenter '垂直位置
.Characters.Text = "マクロ実行" '文字列
.Characters.Font.Size = 11 '文字のサイズ
.Characters.Font.Bold = False '太字
End With
.TextFrame2.TextRange.Font.NameFarEast = "メイリオ" '文字の種類
End With
End Sub
2.マクロを登録する方法
作成した図形にマクロを登録する方法です。
まずは登録するマクロを準備します。
とりあえず簡易的な次のようなマクロを用意しました。
「マクロ実行成功」とメッセージボックスに表示されるだけのマクロです。
Sub Sample2()
MsgBox "マクロ実行成功"
End Sub
作成した図形にマクロを登録するには、図形を右クリックします。

下から4つ目に「マクロの登録」がありますので、こちらクリックします。

選択した図形の「正方形長方形1_Click」と表示されています。
こちらは新規作成を押した際に使用されるプロシージャ名となるため、必要に応じて名前を変更してください。
新規作成をクリックすると次のように自動的にプロシージャが作成されます。

ここに先ほど準備したマクロを呼び出します。

3.登録したマクロを実行する
登録したマクロの実行方法についてです。
こちらは説明するほどではないと思いますが、登録した図形をクリックすると登録したマクロが呼び出されて実行されます。

先ほど登録したマクロが呼び出されて表示されました。
ここで注意ですが、マクロを登録した図形は左クリックすると図形がアクティブにならず、マクロが実行されてしまいます。
アクティブにするためには右クリックなどでアクティブにしてください。