【问题标题】:Populate Combobox(form control) using VBA on Excel 2013在 Excel 2013 上使用 VBA 填充组合框(表单控件)
【发布时间】:2014-06-19 11:23:15
【问题描述】:

我是 VBA 新手。我已经尝试了几个小时来执行一个使用 VBA 代码填充组合框(表单控件)的简单功能。我看过很多网站(包括这个),但似乎没有一个代码有效。我一直在使用这段代码。 (我把这段代码放在一个模块中)

Sub populateDropDown303()

With Worksheets("S1 Fuel Consumption").Shapes("Drop Down 303").ControlFormat

.AddItem "this"

.AddItem "that"

End With

End Sub

嘿,我让代码工作了。但是每次我从组合框下拉列表中选择一个值时,它都会再次运行代码并显示重复的值。我该如何删除它?

【问题讨论】:

  • 你能更好地定义“不工作”吗?您是否收到错误、无结果、错误结果等...
  • 嘿.. 我没有得到任何结果。组合框下拉菜单是空的。
  • 嘿,我让代码工作了。但是每次我从组合框下拉列表中选择一个值时,它都会再次运行代码并显示重复的值。我该如何删除它?

标签: excel vba combobox


【解决方案1】:

试试这个:

Sub populateDropDown303()
    Dim ws As Worksheet: Set ws = Worksheets("S1 Fuel Consumption")
    With ws.Shapes("Drop Down 303").ControlFormat
        .RemoveAllItems '~~> This is what you lack I think
        .AddItem "This"
        .AddItem "That"
    End With
End Sub

我添加了一个 Worksheet 类型的新变量 ws,以便 Intellisense 发挥作用。
这样,您将更容易查看您正在处理的对象的可用方法和属性。 HTH。

【讨论】:

  • 嘿,是的,它有效。非常感谢 :D 而且,我有多个这样的保管箱。我可以只在一个代码中填充它们吗?也许使用形状范围函数?
  • @user3756196 是的,你可以这样做。您希望如何填充它们?你从哪里得到你将在每个中添加的项目。如果不是那么复杂,你甚至可以使用循环。
  • 嘿,是的.. 我用了一个循环 :) 非常感谢
  • 嘿 L42,我需要更多帮助。我将上面的代码用于 4 个这样的下拉菜单。所以我在代码中引入了一个循环来填充这 4 个下拉菜单。现在列表已被填充,但每当我从下拉列表中选择任何项目时,它都会显示为空白。
【解决方案2】:
With Worksheets("S1 Fuel Consumption").Dropdowns("Drop Down 303")
    .AddItem "this"
    .AddItem "that"
End with

【讨论】:

  • 文档链接以及解释您所做更改的任何随附文本将非常有帮助。
  • 我将确切的代码放在 Sub PopulateDropDown303() 下的“模块”中它仍然无法正常工作..我只是不明白为什么:/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-20
  • 2017-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多