将范围内的特定单元格分配给可变VBA

时间:2018-11-29 07:41:18

标签: excel vba excel-vba

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

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

enter image description here

现在在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

2 个答案:

答案 0 :(得分:1)

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

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()返回给定维数的数组长度作为第二个参数。由于我不知道您的意图到底是什么,所以我只是再次打印这些值。

答案 1 :(得分:1)

尝试一下:

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,因此在循环的每次迭代中,先前的值都会被覆盖,从而导致{{1} }的最后一个值在一个范围内,即n