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

在这里输入图像说明 代码从“HistoryUrgents”表单中读取列的string列表,然后移动到名为“Sheet1”的另一个表单中,并在那里find它们并绘制包含string的行。 它工作,直到它读取第二个string(它绘制正确的所有行包含第一个string)。 代码只是在一个连续的循环。 如果我们通过ctrl + break强制closures它,那么我们得到一个popup的“运行时错误”91“”

正如你所看到的附加屏幕截图“C”variables是没有什么,虽然它If Not c Is Nothing Then通过它。

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

With...End With块的所有范围和单元格引用之前添加一个点(句点)。

 Set c = .Cells.Find(What:= 

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

我已经无法testing这个,因为你已经发布了你的代码的图片 – 如果你发布你的代码,并将其包装在代码标签中,我可以将其复制到工作簿。

你得到运行时错误91的原因是因为你试图访问一个不存在的对象的属性。 如果cNothingc.Address不存在。 我不知道为什么这不是自动抛出一个错误,你是否在做一些重写error handling程序或抑制popup消息?

我的build议是将您的c.Address <> firstAddress检查移入循环的主体。

例如。

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