假设我有一排单元格,它们具有以下值:
B2: "banana"
C2: "orange"
D2: "apple"
我将这个范围转换为二维数组(我的主要代码在Word文档中):
dim MySheet as Excel.Worksheet
dim arr as variant
Set MySheet = Excel.Sheets(1)
arr = MySheet.Range(MySheet.Cells(2, 2), MySheet.Cells(2, 4))
我有一个组合框CbbFruits
,我不想一个接一个地添加项目,所以我使用.list
方法:
CbbFruits.List = arr
但仅添加banana
条目。据我了解,要使该方法正常工作,数组必须垂直放置。但是,如果我不想重新洗细胞,该怎么办?有没有一种方法可以在VBA中切换数组的轴?
答案 0 :(得分:3)
从Excel范围创建数组的问题是值是水平表示的(请记住,它是2D数组)。您需要transpose数组以垂直显示值。在Word-VBA中最简单的方法是使用您现有的Excel.Application
对象。
这是一个完整的例子:
Private Sub Test()
Dim oExcel As New Excel.Application
Dim oWb As Excel.Workbook: Set oWb = oExcel.Workbooks.Open(filePath)
Dim MySheet As Excel.Worksheet
Set MySheet = oWb.Worksheets(1)
Dim arr As Variant
arr = MySheet.Range(MySheet.Cells(2, 2), MySheet.Cells(2, 4))
CbbFruits.List = oExcel.WorksheetFunction.Transpose(arr)
oWb.Close SaveChanges:=False
oExcel.Quit
End Sub