有没有一种简单的方法可以从“水平”单元格区域填充组合框?

时间:2019-12-07 19:51:27

标签: excel vba ms-word

假设我有一排单元格,它们具有以下值:

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中切换数组的轴?

1 个答案:

答案 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