条件评估在空行上键入不匹配

时间:2017-03-22 12:44:25

标签: vba excel-vba excel

我正在编写一个宏来搜索大型数据表,以查找满足多个条件的行并从中获取一些值。有时候没有要查找的行,在这种情况下我希望我的值为0.我使用的算法是:

row = 2

Do Until (row satisfies cond1 And cond2 And cond 3) Or Range("A" & row).Value = ""
    row = row + 1
Loop

If Range("A" & row).Value = "" Then
    myval = 0
Else
    myval = something taken from row
End If

每当我的一个条件评估为在空行上测试时键入不匹配时出现问题* - 如果没有找到行并且代码到达结尾,我得到一个错误并且宏从未检查它确实是在数据的最后。

*示例:我的一个条件针对存储为文本的日期测试Date变量,因此我使用mydate = Datevalue(text in row)进行测试,如果文本为空,则会导致类型不匹配。

您知道这个问题的简单解决方案吗?我能想到的最容易的事情是计算之前的行数并转换到For循环,但这肯定会增加一些额外的变量和计算。

1 个答案:

答案 0 :(得分:1)

放手一搏:

row = 2

Do Until Range("A" & row).Value = ""
    If (row satisfies cond1 And cond2 And cond 3) Then Exit Do
    row = row + 1
Loop

If Range("A" & row).Value = "" Then
    myval = 0
Else
    myval = something taken from row
End If

所以基本上,循环直到你到达表的末尾,但如果你找到一个合适的值,就会跳出循环。