|
複数のチェックボックスを使うなら、コントロールツールボックスのチェックボックス
より、フォームツールバーのチェックボックスの方が柔軟なコーディングが出来ます。
つまりコントロール配列のようなことが簡単にできて、一つのプロシージャで複数の
値を判定できるからです。例として「A1:A10の各セルに合わせてチェックボックスを
配置し、B1セルに合わせて配置したボタンを押すことで、それぞれのチェックボックス
の値を判定する」というマクロは
Sub MyCheckBox_Add()
Dim Lp As Single, Tp As Single
Dim Wp As Single, Hp As Single
Dim C As Range
With Range("A1")
Wp = .Width: Hp = .Height
End With
For Each C In Range("A1:A10")
Tp = C.Top
ActiveSheet.CheckBoxes.Add 0.1, Tp, Wp, Hp
Next
Lp = Range("B1").Left
ActiveSheet.Buttons _
.Add(Lp, 0.1, Wp, Hp).OnAction = "MyCheck"
End Sub
↑これを1回だけ実行して、オブジェクトを配置します。ボタンを押したときに
呼び出すマクロは↓です。
Sub MyCheck()
Dim i As Integer
Dim Ms As String
If VarType(Application.Caller) <> 8 Then Exit Sub
With ActiveSheet.CheckBoxes
For i = 1 To .Count
If .Item(i).Value = xlOn Then
Ms = Ms & .Item(i).Name & " = ON" & vbLf
Else
Ms = Ms & .Item(i).Name & " = OFF" & vbLf
End If
Next i
End With
MsgBox Ms
End Sub
なお、配置した全てのコントロールを一括して削除するには、ワークシートメニューの
「編集」「ジャンプ」「セル選択」で「オブジェクト」にチェックし、「編集」「クリア」
「すべて」を選択します。
|
|