excel - 如何从 "horizontal"单元格范围填充组合框?

标签 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”条目。据我了解,此方法要工作于数组,因此单元格范围必须垂直放置。

我不想重新洗牌我的细胞。有没有一种方法可以切换数组的轴?

最佳答案

从 Excel 范围创建数组的问题是值是水平表示的(请记住,它是一个二维数组)。您需要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

关于excel - 如何从 "horizontal"单元格范围填充组合框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59229613/

相关文章:

ms-word - 如何找到某个单词的所有实例并替换为同一单词的超链接?

c# - 获取书签处的文本

c# - 在 C# 中写入 protected Excel 文件

excel - For Each 循环每第 N 行并包括最后一行

excel - 在 excel vba 中,将最后一个字符视为数字,对字符串进行排序的最佳方法是什么

excel - 在VBA中绘制箭头超出范围

java - java中如何在excel中输入

Excel VBA 在转发的 Outlook 电子邮件中包含正文

excel - excel工作表页脚中的最后保存日期

iphone - 如何以编程方式从 iPhone sdk 中收集的数据生成 Word 文件