【问题标题】:Excel - VBA - Search Array Value in WorksheetExcel - VBA - 在工作表中搜索数组值
【发布时间】:2015-11-17 20:58:13
【问题描述】:

我有一个 VBA 宏,它的一部分循环通过一组已定义的字符串并在工作表的 A 列中找到它们。

如果数组的所有字符串都存在于 A 列中,则此方法工作得非常好,但如果字符串不存在,则会失败。

我一直在努力使用一个简单的 if 语句来帮助我。如果没有找到数组值,则移动下一个

For iArow = 0 To UBound(MyArray) - 1
    iRow = Range("A:A").Find(MyArray(iArow), LookIn:=xlValues, lookat:=xlWhole).Row
    Range("D" & iRow).ClearContents
    Range("I" & iRow).ClearContents
    Rows(iRow + 1).Insert
    Rows(iRow).Insert 
Next iArow

有什么建议吗?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    这有帮助吗?

    For iArow = 0 To UBound(myArray) - 1
        Set Rng = Range("A:A").Find(myArray(iArow), LookIn:=xlValues, lookat:=xlWhole)
        If Not Rng Is Nothing Then
            iRow = Rng.Row
            Range("D" & iRow).ClearContents
            Range("I" & iRow).ClearContents
            Rows(iRow + 1).Insert
            Rows(iRow).Insert
        End If
    Next iArow
    

    【讨论】:

    • 非常感谢。但是能不能给我解释一下!就像您在 if 语句中使用双重否定来确定一个肯定,以允许我在找到数组值时单步执行该语句。 Rng 设置为我的数组的值,这很好。但是然后-----“If NOT Rng is NOTHING Then”我读对了吗?
    • Nothing 是一个关键字,表示一个对象没有值。由于没有关键字Anything,你必须使用双重否定。
    • Nothing 是 vba 中的一个特殊值。 Range.Find() 在找不到匹配项时返回该值“Nothing”,这就是 Fratyx 正在检查的 if 语句。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    相关资源
    最近更新 更多