VBA:子程序识别数组中的数字,但不能输出它们?
大家好。 我刚刚开始学习VBA,我一直在玩弄一个子程序,它将从A2
单元格开始随机select一列数字,并在其他地方使用application.transpose()
创build和输出其转置。 这是我的代码。
Sub boxmatrix() ActiveWorkbook.ActiveSheet.Select Dim x() Dim xt() Range("A2").Select ActiveCell.CurrentRegion.Select n = ActiveCell.CurrentRegion.Rows.Count ReDim x(1 To n) ReDim xt(1 To n) Dim range1 As Range Dim range2 As Range Dim range3 As Range Set range1 = Range("A2").CurrentRegion Set range2 = Range(Cells(1, 3), Cells(1, n + 2)) x = range1 xt = Application.Transpose(x) range2.Value = xt Debug.Print (x(1)) <--- THIS IS WHERE THE ERROR HAPPENS End Sub
我已经创build了完成这两件事的代码,但是我注意到我不能做任何事情,比如把这两个向量相乘来创build一个matrix,因为我的数组x()
不被识别为有数字??
任何时候我尝试引用x(#)
,我得到一个错误,而引用xt(#)
工作得很好,这是令人讨厌的xt(#)
从数字中假设在x(#)
首先填充?
我希望有人会帮助新手。
假设单元格A2的CurrentRegion
就是列A中的其他单元格,那么该语句
ReDim x(1 To n)
正在创build一个一维的Variant
数组,边界1 To n
。 但是你后来的发言
x = range1
用二维的Variant
数组replace该variables,其中第一维具有界限1 To n
,并且第二维具有界限1 To 1
。
因此,要访问第一行和第一(也是唯一)列,可以使用:
Debug.Print x(1, 1)