大家好。我刚刚开始学习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}中的数字首先是什么?
我希望有人会帮助新手。
答案 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)