gpt4 book ai didi

excel - VBA Excel - 使用 AddItem 时将标题添加到组合框

转载 作者:行者123 更新时间:2023-12-04 07:44:48 24 4
gpt4 key购买 nike

我有一个列表,其中包含我想在我的用户表单中添加到组合框中的值。
我想要的值在 A 列和 Z 列中(所以值来自 2 列)。我设法使用 AddItem 函数添加值,但努力向下拉列表添加标题(一些帖子说这是不可能的)。
作为替代方案,我看到了 ListFillRange,但我不知道这是否可以用于两个不相邻的列。
感谢帮助。

最佳答案

a few posts said this is not possible


我通常不会回答没有任何努力的问题,但这是一个有趣的问题。我倾向于 同意 和你一起,很多人认为你 不能ComboBox 中显示标题.
但是有可能Combobox 中显示标题.这是一个演示。如果您 不要想改变原来的工作表。
测试用例
对于我们的演示,我们将采用 2 个非连续范围 A1-A5D1-A5 enter image description here
逻辑
  • 您将相关数据复制到新工作表中。
  • 将范围转换为表格
  • 将组合框的列标题设置为 true
  • 将行源设置为帮助表中的相关表范围。

  • 代码
    Option Explicit

    Dim ws As Worksheet

    Private Sub UserForm_Initialize()
    Dim wsInput As Worksheet

    '~~> Input sheet. Change as applicable
    Set wsInput = Sheet1

    '~~> Add a new sheet. Hide it (Optional)
    Set ws = ThisWorkbook.Sheets.Add
    ws.Visible = xlSheetHidden

    '~~> Copy the non-contigous range to the new sheet
    wsInput.Range("A1:A5").Copy ws.Range("A1")
    wsInput.Range("D1:D5").Copy ws.Range("B1")

    Dim rng As Range

    '~~> Get your range
    Set rng = ws.Range("A1:B5")

    '~~> Convert range to table
    ws.ListObjects.Add(xlSrcRange, rng, , xlYes).Name = "MyTable"

    '~~> Few combobox settings and we are done
    With ComboBox1
    .ColumnCount = 2
    .ColumnHeads = True
    .RowSource = "MyTable"
    End With
    End Sub

    '~~> Delete the temp sheet we created
    Private Sub UserForm_Terminate()
    Application.DisplayAlerts = False
    If Not ws Is Nothing Then ws.Delete
    Application.DisplayAlerts = True
    End Sub
    输出
    enter image description here
    替代品
    如果您对辅助表的想法不满意并且可以牺牲标题部分,那么您可以使用非连续范围填充组合框。见 Excel VBA Multicolumn Listbox add non contiguous range .您当然必须编辑代码以满足您的需要。由于只有两列,您的最终数组看起来像 Dim Ar(1 To LastRow, 1 To 2) .该数组将保存两列的值。

    关于excel - VBA Excel - 使用 AddItem 时将标题添加到组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67249418/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com