Arrays 从vba单元生成的Bilding 3x3阵列
我有一行9个单元格,例如 1,2,3,4,5,6,7,8,9 我想建立一个3x3矩阵,比如,以后用它做一些操作 1,2,3 4,5,6 7,8,9 我尝试了以下代码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 这不起作用(类型不匹配),很明显,我没有正确定义数组,但我无法找到它 感谢首先,您应
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循环。我会更新我的答案。