首页 > 解决方案 > 尝试编写 VBA 将所有格式控件下拉值设置为 0

问题描述

徘徊,如果有人可以提供帮助。一直在尝试创建一个将所有下拉列表重置为 0 的宏(格式控件)

到目前为止,我有这个但我收到一条错误消息“无法设置下拉类的 value 属性”

Sub callmacro()

Const NAME As String = "Drop Down"
Dim dropdown As Shape
Dim Sht As Worksheet

Set Sht = ThisWorkbook.Sheets("Pricing Tool")


On Error Resume Next
For Each dropdown In Sht.Shapes


If Left(dropdown.NAME, 9) = NAME Then


dropdown.ControlFormat.Value = 0

On Error GoTo 0

End If

Next dropdown
End Sub

有任何想法吗?

谢谢

标签: excelvbadropdown

解决方案


我不会使用.Shapes集合来做到这一点。如果您的工作表中有其他类型的形状,它很容易变得混乱。

相反,假设您已经为您的 ComboBoxes 分配了一些列表(如果您没有向所有组合框添加至少一个项目,则会引发错误),我会.DropDowns像这样使用隐藏集合:

Option Explicit

Sub InitializeDropDown()
Dim sht As Worksheet
Dim dd As DropDown
Set sht = ThisWorkbook.Sheets("Pricing Tool")
For Each dd In sht.DropDowns
    If dd.ListCount > 0 Then
        dd.Value = 0
    End If
Next dd
End Sub

这会将您的组合框初始化为空白。

请注意,此代码适用于表单控件组合框,而不适用于 ActiveX 组合框。

编辑:

正如 FunThomas 指出的那样,您可以轻松检查是否已将项目添加到组合框中。添加了相关的 If 语句。


推荐阅读