Vba 如何使用循环增加范围对象

Vba 如何使用循环增加范围对象,vba,excel,Vba,Excel,在这段代码中,我试图使用.OffSet(1,0).Activate增加两个范围对象的值 Function Foundry_check_func(target_cell As Range, result_cell As Range) For x = 1 To 20 If result_cell <= 5 Then target_cell = "Value 1" ElseIf result_cell >= 10 Then

在这段代码中,我试图使用.OffSet(1,0).Activate增加两个范围对象的值

  Function Foundry_check_func(target_cell As Range, result_cell As Range)
    For x = 1 To 20
        If result_cell <= 5 Then
            target_cell = "Value 1"
        ElseIf result_cell >= 10 Then
            target_cell = "Value 2"
        Else: target_cell = "Value 3"
        End If

        With target_cell
        .Interior.Color = RGB(0, 255, 0)
        End With

        target_cell.Offset(3, 0).Activate
        result_cell.Offset(4, 0).Activate
        Debug.Print ("Value: " & result_cell & " Loop: " & x)
    Next x


    ' Don't forget to format target cell at end of loop

End Function


Sub Foundry_check()
    Main = Foundry_check_func(Range("J22"), Range("K22"))
End Sub
我使用ActiveCell而不是Range制作了一个类似的宏。但在这个程序中,我需要偏移两组单元格。一个用于读取数据(结果单元格),另一个用于基于该数据写入值(目标单元格)。我不知道如何使用ActiveCell在同一个循环中偏移两个不同的单元格


任何帮助都将不胜感激

我看到的问题是

你的价值没有改变,因为你的目标细胞没有改变。。。你应该加上

  target_cell.address 
到您的调试脚本,您将看到它没有改变。。。 要更改目标单元格,您需要设置目标单元格,但不能激活其他单元格。。。所以你会这样做:

    set target_cell = target_cell.Offset(3, 0)
    set result_cell = result_cell.Offset(4, 0)

这是我看到的问题

你的价值没有改变,因为你的目标细胞没有改变。。。你应该加上

  target_cell.address 
到您的调试脚本,您将看到它没有改变。。。 要更改目标单元格,您需要设置目标单元格,但不能激活其他单元格。。。所以你会这样做:

    set target_cell = target_cell.Offset(3, 0)
    set result_cell = result_cell.Offset(4, 0)

您不需要
偏移量
激活
。直接使用
单元格
集合即可。这到底是怎么回事?循环运行的时间越长,3和4的
偏移量将增加2个范围之间的差距。请尝试:
设置targetcell=targetcell.offset(3,0)
设置resultcell=resultcell.offset(4,0)
,而不是尝试激活单元格。您当前的代码确实激活了单元格,但仅此而已。目标和结果单元格不更改要成功地
for
循环,您需要使用迭代器(
x
)来实际更新某些内容,或者在循环中增量更改和更新某些内容。这两个都不存在。@NickSlash就是他干的。非常感谢,您不需要
偏移量
激活
。直接使用
单元格
集合即可。这到底是怎么回事?循环运行的时间越长,3和4的
偏移量将增加2个范围之间的差距。请尝试:
设置targetcell=targetcell.offset(3,0)
设置resultcell=resultcell.offset(4,0)
,而不是尝试激活单元格。您当前的代码确实激活了单元格,但仅此而已。目标和结果单元格不更改要成功地
for
循环,您需要使用迭代器(
x
)来实际更新某些内容,或者在循环中增量更改和更新某些内容。这两个都不存在。@NickSlash就是他干的。非常感谢