|
コントロールツールボックスのチェックボックスを使うのでなく、
フォームツールバーのチェックボックスに変更して、同様の処理を
した方が効率的かと思います。テストするなら任意の空白シート
を開き、以下の CkBoxes_Add を1回だけ実行して下さい。
チェックをつけた数は C1セル にカウントされます。もちろん
チェックを外したときは、カウントを一つ減らします。
結果がよければ、現在コントロールツールボックスのコントロール
を配置しているシートを開いて、実行してみて下さい。
Sub CkBoxes_Add()
Dim Obj As OLEObject
Dim i As Integer
Dim Tp As Single, Hp As Single
With ActiveSheet
If .OLEObjects.Count > 0 Then
For Each Obj In ActiveSheet.OLEObjects
If Obj.ProgId = "Forms.CheckBox.1" Then
Obj.Delete
End If
Next
End If
With .CheckBoxes
If .Count > 0 Then .Delete
End With
For i = 1 To 30
Tp = .Cells(i, 1).Top
Hp = .Cells(i, 1).Height
.CheckBoxes.Add 0, Tp, Hp, Hp
Next i
With .CheckBoxes
.Text = ""
.OnAction = "Ck_Count"
End With
End With
End Sub
Sub Ck_Count()
Dim x As Variant
Dim Ck As Long
x = Application.Caller
If VarType(x) <> 8 Then Exit Sub
Ck = ActiveSheet.CheckBoxes(x).Value
With Cells(1, 3)
If Ck = xlOn Then
.Value = .Value + 1
Else
.Value = .Value - 1
End If
End With
End Sub
|
|