VBA循环通过单元格范围失败

时间:2011-05-26 10:13:52

标签: excel vba excel-vba

出于某种原因,下面的代码在第二行失败,运行时错误“1004”表示“对象'_Application'的方法'交叉'失败”,并且在某些情况下,我试图修改它生成的代码一个'_Global'失败。更奇怪的是,我已经玩过这个代码的各种版本,有时在调试模式下进行了很多更改之后我重试了这个表单然后运行。如果我然后尝试重新运行代码,它会再次失败。


rng1是来自同一列的一组单元格,rng2是多列上的一组单元格,其行数与rng1相同

e.g。 rng1 = {A2:A10},      rng2 = {D2:H10}

指令将单元格rng2中的单元格值相对于rng1中的单个条目保存到数组中。我已检查范围是否在同一张纸上,有效且(在命名的地方)引用了正确的单元格。

For Each c In Range("rng1").Cells

        For Each d In Application.Intersect(Rows(c.Row), Range("rng2")).Cells

            *some instructions here*

        Next d

Next c

1 个答案:

答案 0 :(得分:6)

尝试这一点,唯一一次代码导致错误的是交叉点最终为空时。

Dim c As Range, d As Range
Dim rng As Range

For Each c In Range("test1")
    Set rng = Application.Intersect(Rows(c.Row), Range("test2"))
    If rng Is Nothing Then
        '' Empty intersection ''
        Debug.Print "Empty"
    Else
        For Each d In rng
            '' some instructions here ''
            Debug.Print d.Address
        Next d
    End If
Next c

当然,您可能还应该在RangeRows前面加上表单,例如:

Sheet1.Rows

Sheet1.Range("test1")

...诸如此类

相关问题