我有一个 ListBox,里面有一些列名,我想建立一个只包含选定列的矩阵。有没有简单的方法可以做到这一点?
我实际上正在尝试:
Dim Matrix_a() As Variant
J = 0
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
J = J + 1
Matrix_a.Columns(J) = Price.Columns(i)
End If
Next i
其中“价格”是先前定义的范围。由于“限定符不正确”,这不起作用,但我不知道如何绕过它(我的 VBA 水平很低)。
我是否遗漏了什么?
答案1
这里有很多问题:
- 由于您已将其声明
Matrix_a
为动态数组,因此在使用之前需要对其进行尺寸标注 - 你不需要
.Columns
参考Matrix_a
- ListBox 属性是
Column
,不是Columns
- ListBox
Selected
属性适用于行,而不是列
使数组变暗
'Declaration
Dim Matrix_a() As Variant
' Set a size
Redim Matrix_a(0 to 1, 0 to 1)
' Resize, keeping any existing data intact
Redim Preserve Matrix_a(0 to 1, 0 to 2)
' you can use variables
i = 3
Redim Preserve Matrix_a(0 to 1, 0 to i)
' Note: you can only change the last dimenstion with Preserve
' Having declared (0 to 1, 0 to 1), this won't work:
Redim Preserve Matrix_a(0 to 2, 0 to 1)