excel - 尝试编写 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
有任何想法吗?
谢谢
解决方案
我不会使用.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 语句。
推荐阅读
- java - 可在 for 循环内运行
- javascript - React Router 的 ES6 导入错误
- javascript - 反应:更改悬停时显示的文本
- ruby - Ruby - 按值将哈希排序为降序
- reactjs - 登录后放大反应自定义登录 UI 还原
- jquery - 在 ajax 完成函数调用中触发失败
- python - 是否可以从 python 中的字节码生成 gremlin 查询
- c++ - 无法将具有 unique_ptr 的对象推回 std::vector
- python - 从列表中的列中提取 2 克字符串
- javascript - 使用 JavaScript 每两周自动切换一次内容(已解决!)