Arrays 从vba单元生成的Bilding 3x3阵列

Arrays 从vba单元生成的Bilding 3x3阵列,arrays,vba,excel,Arrays,Vba,Excel,我有一行9个单元格,例如 1,2,3,4,5,6,7,8,9 我想建立一个3x3矩阵,比如,以后用它做一些操作 1,2,3 4,5,6 7,8,9 我尝试了以下代码 dim varr as variant for i = 0 to 1 for j = 1 to 3 varr(i, j-1) = activesheet.cells(1, 3+i+j)) next j next i 这不起作用(类型不匹配),很明显,我没有正确定义数组,但我无法找到它 感谢首先,您应

我有一行9个单元格,例如

1,2,3,4,5,6,7,8,9

我想建立一个3x3矩阵,比如,以后用它做一些操作

1,2,3

4,5,6

7,8,9

我尝试了以下代码

dim varr as variant
for i = 0 to 1
    for j = 1 to 3
        varr(i, j-1) = activesheet.cells(1, 3+i+j))
    next j
next i
这不起作用(类型不匹配),很明显,我没有正确定义数组,但我无法找到它


感谢

首先,您应该始终明确声明变量,以避免混淆和大量错误<模块顶部的code>Option Explicit将强制您执行此操作

那么您的数组没有正确声明,正如您所提到的。然后,从
ActiveSheet.Cells
中选择值的逻辑也有问题。我认为您需要以下内容:

Option Explicit

Sub Test()
    Dim varr(2, 2) As Variant
    Dim i As Integer
    Dim j As Integer

    For i = 0 To 2
        For j = 0 To 2
            varr(i, j) = ActiveSheet.Cells(1, 1 + j + (i * 3))
        Next j
    Next i

    For i = 0 To 2
        For j = 0 To 2
            Debug.Print "varr(" & i & ", " & j & ") = " & varr(i, j)
        Next j
    Next i
End Sub

首先,您应该始终显式声明变量,以避免混淆和大量错误<模块顶部的code>Option Explicit将强制您执行此操作

那么您的数组没有正确声明,正如您所提到的。然后,从
ActiveSheet.Cells
中选择值的逻辑也有问题。我认为您需要以下内容:

Option Explicit

Sub Test()
    Dim varr(2, 2) As Variant
    Dim i As Integer
    Dim j As Integer

    For i = 0 To 2
        For j = 0 To 2
            varr(i, j) = ActiveSheet.Cells(1, 1 + j + (i * 3))
        Next j
    Next i

    For i = 0 To 2
        For j = 0 To 2
            Debug.Print "varr(" & i & ", " & j & ") = " & varr(i, j)
        Next j
    Next i
End Sub

我如何才能看到阵列中放入了什么?我已经添加了debug.print,但它在即时窗口中返回了一个列表。我不确定我是否理解,但是如果您将
debug.print ActiveSheet.Cells(1,1+j+(I*3))
放在
varr(I,j)=ActiveSheet…
行之前,它将打印出当前添加到数组中的值。添加
debug.print“I=”,j=”&j
查看i和j是什么。我的意思是,如果可能的话,我希望看到最终的阵列3x3布局。当然,上述打印输出就是这样做的。否则,您将不得不在末尾执行新的for循环。我将更新我的答案。我如何查看数组中的内容?我已经添加了debug.print,但它在即时窗口中返回了一个列表。我不确定我是否理解,但是如果您将
debug.print ActiveSheet.Cells(1,1+j+(I*3))
放在
varr(I,j)=ActiveSheet…
行之前,它将打印出当前添加到数组中的值。添加
debug.print“I=”,j=”&j
查看i和j是什么。我的意思是,如果可能的话,我希望看到最终的阵列3x3布局。当然,上述打印输出就是这样做的。否则,您将不得不在末尾执行新的for循环。我会更新我的答案。