我有一本工作簿,用于将许多客户的每日订单整理成一张纸。输入到此工作表中的信息然后用于为客户生成发票。 该工作簿已经运行了好几个月,没有任何错误。但是,最近它开始引发错误。我不记得更改任何可能导致此错误的代码。
我试图自己解决这个问题,但是我的想法已经用尽了,以下是我发现的一些内容:
(CheckBox " & x + 10)
复选框有关。我尝试运行循环,避免检查该特定复选框的值,并且它适用于所有其他复选框。.Select
可能是一个问题。因此,我从可能使用过的所有地方都摆脱了它。我的代码
With ThisWorkbook.Worksheets("Invoice")
For x = 21 To 35
If .Shapes("Check Box " & x + 10).ControlFormat.Value = 1 And .Shapes("Check Box " & x + 25).ControlFormat.Value = 1 Then
MsgBox "Please only select one from the options (Return OR Discount)"
Exit Sub
Else
End If
Next x
End With
据我了解,当我使用的对象不支持我要使用的属性时,会出现此错误。我不明白的是,为什么相同的代码行在循环的“ 90%”中起作用(即,相同类型的对象在循环的90%中确实支持该属性),但是却对循环的一个对象却不起作用。相同的类型。
为完整起见,每次使用工作簿时,下面的代码用于重新插入复选框。这样做是因为另一个过程可能会删除工作簿中的整个行,从而弄乱了复选框的功能。因此,请确保具有正确名称的复选框位于正确的单元格中:
Sub CheckBoxes()
ThisWorkbook.Worksheets("Invoice").CheckBoxes.Delete
With ThisWorkbook.Worksheets("Invoice")
For x = 5 To 19
Set cb = .CheckBoxes.Add(.Cells(x, "J").Left, .Cells(x, "J").Top, 4, 10)
With cb
.Name = "Check Box " & x + 26
.Caption = ""
.Display3DShading = False
End With
Set cb2 = .CheckBoxes.Add(.Cells(x, "K").Left, .Cells(x, "K").Top, 4, 10)
With cb2
.Name = "Check Box " & x + 41
.Caption = ""
.Display3DShading = False
End With
Next x
End With
End Sub
在正确方向上的任何帮助或指导将不胜感激!