在Excel中使用VBA循环复选框非常慢

Mic*_*wed 4 checkbox excel performance vba loops

我有一张带有大约4500个复选框的Excel表格(我知道,这听起来很愚蠢,但它是针对客户的,请不要问......).刚写下下面的VBA Sub来取消选中所有框.到目前为止,它的工作原理非常缓慢,只需要超过5分钟,直到所有的boc都未经检查,而Sub运行时,整个Excel Applikation会冻结.我知道,4500复选框很安静很多,但我想知道这真的足以让Excel陷入这样的麻烦......有谁有想法?

最佳迈克尔

Sub DeselectAll()
   Application.EnableCancelKey = False
   Application.Calculation = xlCalculationManual
   Application.ScreenUpdating = False
   Application.EnableEvents = False
   Dim wksA As Worksheet
   Dim intRow As Integer

   Set wksA = Worksheets("Companies")
   For intRow = 1 To 4513
      wksA.CheckBoxes("Checkbox_" & intRow).Value = False
   Next
 End Sub
Run Code Online (Sandbox Code Playgroud)

EvR*_*EvR 7

没有选择:

Sub DeselectAll()
  With Worksheets("Companies").CheckBoxes
   .Value = xlOff
  End With
End Sub
Run Code Online (Sandbox Code Playgroud)


Gar*_*ent 5

只是不要循环.

这是选择可以帮助的一个很好的例子:

设置所有复选框:

Sub dural()
    ActiveSheet.CheckBoxes.Select
    Selection.Value = xlOn
End Sub
Run Code Online (Sandbox Code Playgroud)

取消选中所有复选框:

Sub dural2()
    ActiveSheet.CheckBoxes.Select
    Selection.Value = xlOf
End Sub
Run Code Online (Sandbox Code Playgroud)

(在表单类型复选框上测试)