4

特定の範囲のセルまたは列ごとにアクティブなXチェックボックスをすべてクリアしようとしています

以下のコードでワークシート全体に対して実行できたので、簡単なようです。単一の列またはセル範囲にのみ適用されるようにこれを変更する方法がわかりません。

Sub ClearAllCheckboxes()
  Dim Answer As String
  Dim MyNote As String
  Dim Obj As Object

  MyNote = "This will Clear all CheckBoxes Proceed? "
  Answer = MsgBox(MyNote, vbQuestion + vbYesNo, "???")

  If Answer = vbNo Then
    Exit Sub
  Else
    On Error Resume Next
    For Each Obj In ActiveSheet.OLEObjects
         Obj.Object.Value = False
    Next Obj
  End If
End Sub
4

2 に答える 2

1

topleftcellプロパティを使用してみてください:

Sub ClearAllCheckboxes()
  Dim Answer As String
  Dim MyNote As String
  Dim Obj As Object
dim rg as range

set rg=selection

  MyNote = "This will Clear all CheckBoxes Proceed? "
  Answer = MsgBox(MyNote, vbQuestion + vbYesNo, "???")

  If Answer = vbNo Then
    Exit Sub
  Else
    On Error Resume Next
    For Each Obj In ActiveSheet.OLEObjects
        if not intersect(rg, obj.topleftcell) is nothing then _
         Obj.Object.Value = False
    Next Obj
  End If
End Sub
于 2012-11-05T17:36:45.257 に答える
1
Obj.TopLeftCell.Column

チェックボックスがどの列にあるかを教えてくれます。それに基づいて、値を変更するかどうかを決定できます。

于 2012-11-05T17:39:33.490 に答える