【问题标题】:Is there a way to add to a combobox list using a textbox and button?有没有办法使用文本框和按钮添加到组合框列表?
【发布时间】:2020-02-22 01:27:36
【问题描述】:

我正在寻找一种将项目添加到组合框列表而不直接将项目添加到代码的方法。

UserForm Image

Private Sub UserForm_Initialize()
    With ComboBox2
         .AddItem ".020"
         .AddItem ".030"
         .AddItem ".032"
         .AddItem ".040"
   End With

   With ComboBox3
        .AddItem "THK"
        .AddItem "DIA"
        .AddItem "TUBE"
        .AddItem "FORGING"
    End With
End Sub

我希望用户能够在不进入代码的情况下将项目添加到下拉列表中。有没有办法将 .AddItem 添加到组合框?

【问题讨论】:

    标签: vba combobox ms-word userform


    【解决方案1】:

    与列表框不同,组合框允许用户直接在组合框字段中键入新条目。这是最简单的解决方案,不需要额外的代码!

    如果出于某种原因,您想让它变得更复杂,您可以添加一个文本字段和一个命令按钮。用户在文本字段中键入新条目后,他们单击运行此宏的按钮:

    Private Sub CommandButton1_Click()
      ComboBox3.AddItem TextBox1.value
    End Sub
    

    【讨论】:

    • 约翰,感谢您在这方面的帮助,我确信我正在努力做到这一点,我对此很陌生。我正在尝试使用户必须从下拉列表中选择文本,并且我已关闭组合框上的输入选项,因此它只有下拉列表。我们使用区分大小写和空间敏感的 ERP 系统,如果两个人在系统中输入相同的项目但他们不相同,它将创建一个新项目,而不是在系统中查找现有项目。所以我试图消除双空格或大写/小写差异。
    • 你给我的代码几乎完成了我需要的工作,但它没有将项目添加到代码中以供将来使用。那可能吗?我希望用户输入一次,然后其他人会从下拉列表中选择它。
    • 您进入了一个全新的复杂领域。最简单的方法是将下拉列表存储在文本文件或自动文本/构建块中。您的 VBA 必须打开该文本,阅读它并用它初始化下拉菜单。然后,当用户窗体关闭时,将检索列表,如果它与原始数据不同,您将在文本文件或构建块中写入一个新列表。
    • 关于您提到的大写/小写和空格,关于过滤重复文本的文章已经写了很多。使用正则表达式可以大大消除这个问题。这不是一个简单的话题,但它非常强大:wellsr.com/vba/2018/excel/vba-regex-regular-expressions-guide
    • 我将开始研究如何使用文本文件进行操作。再次感谢您帮助约翰!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多