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

kav*_*ter 3 excel vba excel-vba

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


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

例如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
Run Code Online (Sandbox Code Playgroud)

Sim*_*wen 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
Run Code Online (Sandbox Code Playgroud)

当然,你或许也应该前缀你RangeRows与板材,如:

Sheet1.Rows
Run Code Online (Sandbox Code Playgroud)

Sheet1.Range("test1")
Run Code Online (Sandbox Code Playgroud)

诸如此类......

  • 关于运行它的问题中的注释,它的工作原理然后重新运行它并没有,我认为你的最后评论是在标记上.如果在运行时选择了不同的工作表,则无法工作. (2认同)
  • 我认为这可能是问题......记住伙计:总是完全符合条件!`范围(...)`是**邪恶** (2认同)