使用类似于OFFSET的返回类型Range

时间:2016-07-22 15:32:40

标签: vba excel-vba loops offset do-while

  

我想创建一个Do While ...循环,它将遍历每个单元格   在一列中,检查每个单元格中的值是否为数字。它还应该记录第一个非数字条目之前有多少个数字

但是,我不知道用什么技术来逐步降级...这是我第一次尝试的(它是简化的并且假设从第1行开始在A列中有数字到任意一行):

Counter = 0
Iteration = Worksheets("Sheet1").Range("A1")

Do While IsNumeric(Iteration) = True And IsEmpty(Iteration) = False
   Counter = Counter + 1
   Iteration = Iteration.Offset(1,0)
Loop

但是,这不起作用,因为Offset(1,0)返回引用单元格中的值。所以,我需要类似于Offset的东西,但返回值类型为Range。谢谢!

2 个答案:

答案 0 :(得分:1)

您需要将迭代声明为范围并设置它。

不需要计数:

Dim Iteration as Range

Set Iteration = Worksheets("Sheet1").Range("A1")

Do While IsNumeric(Iteration.Value) And Iteration.Value <> ""
   Set Iteration = Iteration.Offset(1,0)
Loop

答案 1 :(得分:1)

Sub checkNumber()

    For x = 2 To Range("a65536").End(xlUp).Row
        If IsNumeric(Range("a" & x).Value) Then
            Range("b" & x).Value = "this is a number"
        Else
            Range("b" & x).Value = "this is not a number"
        End If
    Next x

End Sub