出于某种原因,下面的代码在第二行失败,运行时错误“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
答案 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
当然,您可能还应该在Range
和Rows
前面加上表单,例如:
Sheet1.Rows
和
Sheet1.Range("test1")
...诸如此类