シナリオには2種類のコントロールを挿入できます。1つはフォームコントロールで、もう1つはActiveXコントロールです。
フォームコントロール
フォームコントロールを挿入するには、このコードを使用する必要があります
Sheets("Sheet1").CheckBoxes.Add 52.5, 3, 42, 17.25
構文は
CheckBoxes.Add Cell.Left, Cell.Top, Cell.Width, Cell.Height
ActiveXコントロール
ActiveXコントロールを挿入するには、このコードを使用する必要があります
Sheets("Sheet1").OLEObjects.Add ClassType:="Forms.CheckBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=54, Top:=1.5, Width:=39.75, Height:=11.25
したがって、上記のコントロールのいずれかを追加するには、ループを使用してセルの座標を見つけてから、関連する場所にチェックボックスを追加する必要があります。シナリオでは、フォームコントロールを使用して、上記のチェックボックスのいずれかがクリックされたときに実行される1つのコードを使用できるようにすることをお勧めします。
次に、すべてのチェックボックスが同じマクロを呼び出すようにする方法:)
ヒント:このコードはチェックボックスを作成してから、マクロをチェックボックスに割り当てます。
Sub Sample()
Dim Shp As Shape
'~~> Create a Checkbox
Set Shp = Sheets("Sheet1").CheckBoxes.Add(52.5, 3, 42, 17.25)
'~~> Assing a macro to it
Shp.OnAction = "'" & ActiveWorkbook.Name & "'!macro_name"
End Sub
はい、次の質問です。マクロは、どのチェックボックスがそれを呼び出しているかをどのように知るのでしょうか?
ヒント:何をするかを確認してくださいApplication.Caller
;)チェックボックスにリンクされているマクロにコードを配置します。
Sub macro_name()
MsgBox "This macro was called by " & Application.Caller
End Sub
HTHそしてあなたを正しい軌道に乗せます:)
シド