【问题标题】:How to fill combobox with an Excel-row (string)?如何用 Excel 行(字符串)填充组合框?
【发布时间】:2020-01-30 01:38:04
【问题描述】:

我想在 Excel 中用一行 (CAT, DOG, FISH, ...) 填充 Combobox

到目前为止我所做的是以下

Private Sub UserForm_Initialize()

    Dim Axis As Variant

    Axis = Rows(1)

    ComboBox1.List = Axis

End Sub

编译成功,但我只能看到第一个值(例如 CAT)。

如果我尝试以下代码....

Private Sub UserForm_Initialize()

    Dim Axis As Variant

    Axis = Columns(1)              '<< Columns instead of Rows

    ComboBox1.List = Axis

End Sub

.... Combobox 包含整个 Column。

我尝试了很多方法,但还没有找到解决方案。

因此,我问你们是否有人可以帮助我。

谢谢

【问题讨论】:

  • Axis = Intersect(ActiveSheet.Range("A:A"),ActiveSheet.UsedRange).value
  • 感谢您的消息 Scott,但如果我复制您的代码,Combobox 将保持为空

标签: arrays excel vba combobox userform


【解决方案1】:

如果您有一行并希望它们显示在单个列表中,则必须转置

ComboBox1.List = Application.Transpose(Sheet1.Range("A1:C1").Value)

你也可以这样做

ComboBox1.List = Array("Cat", "Dog", "Fish")

要将一行保持在一行中,您必须增加组合框的列数。

【讨论】:

  • 感谢 SJR,但我想阅读第一行并用它们填充组合框,不要手动填充组合框....如果我尝试您的第一个建议,组合框仍然为空:(
  • 必须与您的设置有关。发布屏幕截图。
  • 关于第一个代码行的建议:使用反向 .Column 属性而不是 .List 的较短分配将是:ComboBox1.Column = Sheet1.Range("A1:C1").Value :-)
  • @T.M.- 非常整洁。也许值得发布作为答案。
  • 很好工作。尝试将 Combobox 中的项目从第 1 行的 16384 列减少到实际项目计数,例如通过ComboBox1.Column = Sheet1.Rows(1).Resize(1,3) 并使用完全限定的范围引用,例如使用工作表的 CodeName :-) @Ayrix
【解决方案2】:

我更喜欢使用以下代码,以便我可以轻松地删除或添加参考表中列出的项目。

Dim wS As Worksheet
Dim refTable As Range

Set wS = Sheet1    
Set refTable = wS.Range("A1" , Cells(Rows.Count, "A").End(xlUp))
Combobox.List = refTable.Value

您可以更改 refTable 范围以更改“A1”和“A”。 也可以用于行来改变 Rows.Count 和 xlUp。

【讨论】:

  • 您好@Andrew7,感谢您的回复...但是 T.M. 的上述建议非常有效。我只是说“ComboBox1.Column = Row(1).Value”,它可以工作:)
【解决方案3】:

对我有用的是:

Dim axis as Variant
Dim lstColumn As Long

'Find last Column
    With ActiveSheet.UsedRange
        lstColumn = .Columns(.Columns.Count).Column
    End With

'Fill axis with all values from the first row
axis = Application.ActiveSheet.Range(Cells(1, 1), Cells(1, lstColumn))

'Write all values of axis in Combobox
ComboBox11.Column = axis

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 2015-06-16
    相关资源
    最近更新 更多