对象在循环中的IF语句中不支持此属性/方法

时间:2019-09-23 16:18:59

标签: excel vba

我有一本工作簿,用于将许多客户的每日订单整理成一张纸。输入到此工作表中的信息然后用于为客户生成发票。 该工作簿已经运行了好几个月,没有任何错误。但是,最近它开始引发错误。我不记得更改任何可能导致此错误的代码。

我试图自己解决这个问题,但是我的想法已经用尽了,以下是我发现的一些内容:

  • 错误总是在下面的循环的第7次迭代中弹出(即x = 27时)。
  • 该错误仅与(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

在正确方向上的任何帮助或指导将不胜感激!

0 个答案:

没有答案