应用程序定义或if语句的对象定义错误

时间:2016-06-20 20:10:07

标签: excel vba object if-statement

每当我尝试运行此代码时,我在if语句中得到了该错误,我不知道为什么,请建议rcolor和info定义并且工作完美我只是选择不将它们放在这里,因为它们相当很长,不会以任何方式影响问题 M8来自不同的子

Sub Schedule(M8 As Variant)
If eTime = "900" Then
retry1:
    If IsEmpty(Cells(8, M8).Value) And IsEmpty(Cells(12, M8).Value) = True Then
        Sheets("Schedule").Cells(8, M8).Value = info
        Sheets("Schedule").Range(Cells(9, M8), Cells(12, M8)).Value = ","
        Sheets("Schedule").Range(Cells(8, M8), Cells(12, M8)).Interior.Color = rcolor
        Sheets("Schedule").Range(Cells(8, M8), Cells(12, M8)).BorderAround Weight:=xlMedium
        M8 = M8 + 1
    Else
        M8 = M8 + 1
        GoTo retry1
    End If

我已经被困在这个问题很长一段时间了,并且希望得到任何帮助,thnx提前。

1 个答案:

答案 0 :(得分:2)

正如@findwindow所提到的,您需要为所有对象(范围)分配父级,以确保代码按照您的意愿执行完全

您可以使用With块整齐地执行此操作。否则,如果您没有指定要使用的确切对象,代码将只查看最后一个活动对象,这可能不是您想要的。

With Sheets("Schedule")

    If IsEmpty(.Cells(8, M8).Value) And IsEmpty(.Cells(12, M8).Value) Then

        .Cells(8, M8).Value = info
        .Range(.Cells(9, M8), .Cells(12, M8)).Value = ","
        .Range(.Cells(8, M8), .Cells(12, M8)).Interior.Color = rcolor
        .Range(.Cells(8, M8), .Cells(12, M8)).BorderAround Weight:=xlMedium

        M8 = M8 + 1

    Else

        M8 = M8 + 1
        GoTo retry1

    End If

End WIth