虽然条件不正确,但vba代码正在执行

时间:2016-01-26 09:24:54

标签: excel vba excel-vba

enter image description here 该代码从" HistoryUrgents"中的列中读取字符串列表。然后它移动到另一张名为" Sheet1"然后它找到它们并绘制包含字符串的行。它一直工作,直到它读取第二个字符串(它描绘了包含第一个字符串的所有行)。代码只是停留在连续循环中。如果我们通过ctrl + break强制关闭它,那么我们会弹出一个"运行时错误' 91'"

正如您在附加截图中看到的那样," c"变量没什么,虽然If Not c Is Nothing Then传递了它。

2 个答案:

答案 0 :(得分:2)

在Do循环中,您的范围和单元格不一定引用Sheet1 - 它们引用当前活动的工作表。

在所有范围&之前添加一个点(句点)你的细胞参考 With...End With阻止。

Set c = .Cells.Find(What:=

.Range(.Cells(c.ROW, START_MARK), .Cells(

由于您发布了代码图片,我无法对此进行测试 - 如果您发布了代码并将其包装在代码标记中,我可以将其复制到工作簿中。 / em>的

答案 1 :(得分:0)

您获得运行时错误91的原因是您尝试访问不存在的对象的属性。如果cNothing,则c.Address不存在。我不知道为什么这不会自动抛出错误,你是在做什么来覆盖错误处理程序或抑制弹出消息?

我的建议是将c.Address <> firstAddress支票移到循环体内。

例如

Do
    If c.Address <> firstAddress Then
        c.Select
        ' ... insert rest of your code ...
        ' ...
    End If
Loop While Not c Is Nothing