我用的代码如下:PrivateSubCheckBox21_Click()DimNums,i%Nums=Array(14,15,16,18,21,24,27,30,33,3...
  
    
  我用的代码如下:
  
  
  Private Sub CheckBox21_Click()
  
  Dim Nums, i%
  
  Nums = Array(14, 15, 16, 18, 21, 24, 27, 30, 33, 36)
  
  For i = 0 To 20
  
  ActiveSheet.CheckBoxes("CheckBox" & Nums(i)).Value = CheckBox21.Value
  
  Next
  
  End Sub
  
  
  可是会报以下错误,为什么呢?应该怎么修改
  
  后来修改代码成:
  
  Private Sub CheckBox21_Click()
  
  For i = 0 To 20
  
  ActiveSheet.CheckBoxes("CheckBox" & i).Value = CheckBox21.Value
  
  Next
  
  End Sub
  
  
  还是会出错
  
Private Sub CheckBox21_Click()
Dim Nums, i%
Nums = Array(14, 15, 16, 18,  24, 27, 30, 33, 36)
For i = 0 To 8
   ActiveSheet.CheckBoxes("CheckBox" & Nums(i)).Value = CheckBox21.Value
Next
End Sub
试一下吧,删除了21,改了i值。
  我改成这样还是会出错,为什么呢?
Private Sub CheckBox21_Click()
For i = 0 To 20
    ActiveSheet.CheckBoxes("CheckBox" & i).Value = CheckBox21.Value
Next
End Sub
  你按我写的试一下,好吧,也许可以呢。
  Private Sub CheckBox21_Click()
CheckBox21.Caption = IIf(CheckBox21.Value, "全不选", "全选")
Dim i
For i = 1 To Shapes.Count
    If Left(Shapes(i).Name, 8) = "CheckBox" And Shapes(i).Name <> "CheckBox21" Then
        Shapes(i).OLEFormat.Object.Object.Value = CheckBox21.Value
    End If
Next
End Sub
  
   考虑到可能存在其他控件,所以增加了对Shapes的Name属性的判断。如果楼主更改了控件的名字,就需要用更精准的判别代码(比如使用Shapes.OLEFormat.ProgID属性)
  
  
   附件可下载参考
  
  
   
  
  
   本回答被提问者采纳