通過所有紙張此代碼遍歷(除了命名爲Sheet100
和OtherSheet
張)和取消選中所有ActiveX
複選框命名CheckBox1
Sub uncheck_boxes()
Dim ws As Worksheet
Dim xbox As OLEObject
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Sheet100" And ws.Name <> "OtherSheet" Then
For Each xbox In ws.OLEObjects
ws.OLEObjects("CheckBox1").Object.Value = False
Next
End If
Next
End Sub
要取消所有ActiveX
複選框在所有工作表中不管我們的名字ED
Sub uncheck_all_ActiveX_checkboxes()
Dim ws As Worksheet
Dim xbox As OLEObject
For Each ws In ThisWorkbook.Worksheets
For Each xbox In ws.OLEObjects
ws.OLEObjects(xbox.Name).Object.Value = False
Next
Next
End Sub
要取消所有Form Control checkboxes
在電子表格中使用
Sub uncheck_forms_checkboxes()
Dim ws As Worksheet
Dim xshape As Shape
For Each ws In ThisWorkbook.Worksheets
For Each xshape In ws.Shapes
If xshape.Type = msoFormControl Then
xshape.ControlFormat.Value = False
End If
Next
Next
End Sub
謝謝你的幫助。有些奇怪的事情正在發生:這似乎適用於2張手動工作的紙張;但是,它似乎不適用於後續工作表,爲此我只需複製粘貼複選框和VBA代碼。我檢查了多次,這些項目的名稱與我手動創建的項目相同。我真的不明白爲什麼這不起作用?手動創建所有框不可行,因爲我有太多的表單。非常感謝你的幫助。 – jcv
@jcv我明白了。我敢打賭,你真的很容易忽略一個人。打開一個新的工作簿並嘗試手動創建一些複選框並將其複製到其他工作表中。然後運行此代碼並查看行爲。我在我的機器上測試過,一切正常。在你的情況下,把一些'Debug.Print'行,看看你是否真的遍歷所有的工作表,所有複選框等 – 2013-05-29 16:33:11
Mehow,謝謝你。我做了一些分析,發現了一個新的錯誤 - 請參閱我更新的主文章。當我運行你的VBA代碼時,我在CheckBox代碼中出現錯誤@ Case False [...] ActiveSheet.Shapes等。你能看看嗎? – jcv