マクロでActiveXコントロールボタン作成
ActiveXコントロールボタンをマクロで作る
ActiveXコントロールボタン作成
今回は、ActiveXコントロールボタンをマクロで作成してみましょう。
どんなコードを書いていいのかよくわかならない時は、記録してみるという方法があります。
そして、その記録から得られたコードに変更を加えます。
Excelバージョン:
(サンプルファイルは、こちらから 2010マクロ講座29回サンプルデータ)
記録できないコマンドボタンのプロパティ
マクロの記録でActiveXコントロールボタンを作成してみましょう。


CommandButton1が作成されたら、記録を終了します。


出来たコードを見てみると、以下のようなコードになりました。


次にもう一度、ボタンに色をつけたり名前やキャプションを変えたらどうなるのかとマクロの記録を
繰り返しても、プロパティで変更した部分のマクロの記録は記載さず、最初の記録と同じようなコードでした。
コマンドボタンのプロパティに関しては、マクロの記録では記録できないのです。
Sub Macro2() ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _ , DisplayAsIcon:=False, Left:=153.75, Top:=78, Width:=132, Height:= _ 37.5).Select End Sub
CommandButtonコードに修正を加える
数値の代わりにセルの位置で指定したいので、マクロの記録のコードを次のように書き換えました。
.Object.BackColor = &HFFFFC0で、ボタンの色を変更し、
.Object.Caption = "MyA"でボタンの表示名を変更しています。
変更したコードを実行すると、以下のようにRange("B5:C5")の位置情報を利用してボタンが作成されます。

Sub 記録マクロから変更() Dim セル1 As Object Set セル1 = ActiveSheet.Range("B5:C5") With ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _ Link:=False, DisplayAsIcon:=False, _ Left:=セル1.Left, Top:=セル1.Top, Width:=セル1.Width, Height:=セル1.Height * 2) .Name = "MyA" .Object.BackColor = &HFFFFC0 .Object.Caption = "MyA" End With End Sub.Name = "MyA"でボタンの名前を指定し、
.Object.BackColor = &HFFFFC0で、ボタンの色を変更し、
.Object.Caption = "MyA"でボタンの表示名を変更しています。
変更したコードを実行すると、以下のようにRange("B5:C5")の位置情報を利用してボタンが作成されます。

次のコードでは、シート上のアクティブセルを利用してボタンを作成します。
あらかじめ、どこかのセルを選択しておきます。
Sub 記録マクロから変更2() With ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False) .Object.Caption = "ボタン1" .Object.Font.Name = "小塚ゴシック Pr6N" 'フォントの種類を変更 .Object.Font.Size = 11 .Object.BackColor = &HC0C0FF .Width = ActiveCell.Width * 2 'アクティブセルの幅を利用 .Height = ActiveCell.Height 'アクティブセルの高さを利用、ActiveCell.Height * 2 で2倍の高さに End WithD2セルを選択しておいて、マクロを実行すると、

さらに、このコードからコマンドボタンを横に2つ並べるとか縦に2つ並べるなどのコードへ変更することができます。
ActiveCell.Offset(0, 3).Activateとして列を移動させます。

Sub CommandButtonを横で2個() ActiveSheet.Range("D2").Select (*この部分省略*記録マクロから変更2 のコードをそのまま貼り付ける) ActiveCell.Offset(0, 3).Activate With ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False) .Object.Caption = "ボタン2" .Object.Font.Name = "小塚ゴシック Pr6N" .Object.Font.Size = 11 .Object.BackColor = &HFFC0C0 .Width = ActiveCell.Width * 2 .Height = ActiveCell.Height 'ActiveCell.Height * 2 End With End Sub実行すると、CommandButtonが2つ横に並んで作成されます。

コマンドボタンを縦に2つ並べて作成するには、上記コードのOffset(0, 3)の部分で、Offset(3, 0)のように、行だけ移動してコードを繰り返せばOKです。