VBA:子程序识别数组中的数字,但不能输出它们?

时间:2017-10-31 02:05:47

标签: excel vba excel-vba vector matrix-multiplication

大家好。我刚刚开始学习VBA,而且我一直在玩一个子程序,它会从单元格ScreenManagement: MainMenu: <MainMenu>: name: "main" FloatLayout: Button: id: button1 font_size: app.first_size size_hint: 0.5, 0.2 pos_hint: {"top": 0.5, "right": 1} text: "One-line dummy" Button: id: button2 font_size: app.second_size size_hint: 0.5, 0.2 pos_hint: {"top": 0.5, "left": 1} text: "This is a two-line\n dummy" halign: "center" Button: on_release: app.open_settings() text: "Settings" font_size: self.height/4 pos_hint: {"top": 0.1, "right": 0.5} size_hint: 0.2, 0.1 开始随机抽取一列数字,并使用{{1}创建并输出它的转置}} 别的地方。这是我的代码。

A2

我已经创建了完成这两件事的代码,但我注意到我无法做任何事情,比如将这两个向量相乘以创建矩阵,因为我的数组{ {1}}未被识别为有数字?

每当我尝试引用application.transpose()时,我都会收到错误,而引用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 的效果非常好,这很烦人,因为x()填充了{{1}中的数字首先是什么?

我希望有人会帮助新手。

1 个答案:

答案 0 :(得分:1)

假设单元格A2的CurrentRegion只是A列中的其他单元格,那么语句

ReDim x(1 To n)

正在创建一个Variant数组,该数组是一维的,边界为1 To n。但是你随后的陈述

x = range1

正在用一个二维Variant数组替换该变量,第一个维度的边界为1 To n,第二个维度的边界为1 To 1

因此,要访问第一行和第一个(也是唯一的)列,您可以使用:

Debug.Print x(1, 1)