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)