Excel 将范围中的特定单元格指定给变量VBA

Excel 将范围中的特定单元格指定给变量VBA,excel,vba,Excel,Vba,是否有方法将特定单元格从VBA中的某个范围存储到新变量中?我的意思是 假设我已将下面的数据设置为范围调用“数字” 现在在VBA中,对于每一行,我要提取每个单独的单元格值,并将每个值赋给不同的变量。然后再重复下一行 我基本上希望使用给定行中的值来做一些事情,然后让它在下一行中重复 这有意义吗 这就是我一直在玩的东西。。。但我不知道如何将给定行中的每个单元格分配给一个新变量 Public Sub try() Dim rng As Range Dim row As Range

是否有方法将特定单元格从VBA中的某个范围存储到新变量中?我的意思是

假设我已将下面的数据设置为范围调用“数字”

现在在VBA中,对于每一行,我要提取每个单独的单元格值,并将每个值赋给不同的变量。然后再重复下一行

我基本上希望使用给定行中的值来做一些事情,然后让它在下一行中重复

这有意义吗

这就是我一直在玩的东西。。。但我不知道如何将给定行中的每个单元格分配给一个新变量

Public Sub try()
    Dim rng As Range
    Dim row As Range
    Dim cell As Range
    Dim n As Double

    Set rng = Range("numbers")

    For Each row In rng.Rows

        For Each cell In row.Cells

              n = cell.value

        Next cell

    Next row
End Sub

是否有任何特殊原因需要在新变量中存储任何单元格值? 在给定的范围内,只需将值存储在变量数组中就很容易了。在您的示例中,它类似于:

Public Sub try()

    Dim rng As Range
    Dim dataArray as Variant

    Set rng = Range("numbers")
    dataArray = rng

    debug.print dataArray(1, 2) 'This would print 7 in your example range

end sub
然后,您可以像下面这样轻松地在变量数组中循环:

Dim i as Long, j as Long

For i = 1 To UBound(dataArray, 1) 'This will loop through each row
    For j = 1 To UBound(dataArray, 2) 'This will loop through each column (cell in your row)
        Debug.Print dataArray(i, j)
    Next
Next
UBound()
返回给定维度的数组长度作为第二个参数。我只是再次打印这些值,因为我不知道您的确切意图。

请尝试以下操作:

Dim numberArray As Variant
' this line will assign numbers inside the range to an array
numberArray = Range("numbers").Value2
' now you are able to access all numbers in you range through this array, like this:
MsgBox numberArray(1, 1) 'it will show 1
你现在这样做是没有意义的,因为你将所有值赋给一个变量
n
,所以在循环的每次迭代中,前一个值都会被覆盖,导致
n
的最后一个值在一个范围内,即
3

@MichałTurczyn是有意义的。但你可能会发现这也值得研究。通常,使用数组或listobjects比直接使用范围快得多。