如果Excel VBA中的空循环过早退出

时间:2016-05-06 07:19:31

标签: excel-vba vba excel

快速提问,下面的代码看起来有什么问题(找到第一个非零行)?它保持退出循环,尽管第一个非零行是第5行,而不是第2行:(

'Finding first non-zero row
    y = 2
    If IsEmpty(Range(Cells(y, 10).Address)) = True Then
    Do
     y = y + 1
    Loop While IsEmpty(Range(Cells(y, 10).Address)) = True
End If

FirstRow = y

非常感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

代码运行正常,只需确保您正在查找正确的列:第10列是列J,可能不是您希望查看的列。

然而,您的代码需要改进几件事:

  • 您不需要If。只需使用Do While来获得相同的检查顺序;
  • = True添加到条件中没有用处,因为IsEmpty()已经返回Boolean;
  • IsEmpty(Cells(y, 10))应足以进行检查。获取单元格的地址字符串然后使用Range()将其转换回Cells()已经返回的地址字符串是过分的。

代码:

y = 2
Do While IsEmpty(Cells(y, 10))
    y = y + 1
Loop
FirstRow = y

答案 1 :(得分:-1)

您的IsEmpty行都应该检查False,而不是True。