如何使用循环增加Range对象

时间:2016-12-06 22:32:01

标签: excel vba excel-vba

在这段代码中,我尝试使用.OffSet(1,0)增加两个Range对象.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

但是,我可以看到使用Debug.Print,每次循环后,正在读取的单元格不会改变。这是输出:

Value: 1 Loop: 1
Value: 1 Loop: 2
Value: 1 Loop: 3
Value: 1 Loop: 4
Value: 1 Loop: 5
etc.

我使用ActiveCell而不是Range进行了类似的宏工作。但在这个程序中我需要OffSet两组单元格。一个用于读取数据(result_cell),另一个用于基于该数据(target_cell)写入值。我不确定如何使用ActiveCell来在同一个循环中偏移两个不同的单元格。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是我看到的问题......

你的价值没有改变,因为你的target_cell没有改变......你应该添加

  target_cell.address 

到你的调试脚本,你会看到它没有改变...... 要更改目标单元格,您需要设置target_cell,您不能只激活另一个...所以你会这样做:

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