启用/禁用 Excel 2007 组合框

Posted

技术标签:

【中文标题】启用/禁用 Excel 2007 组合框【英文标题】:Enable/disable Excel 2007 combobox 【发布时间】:2010-11-29 11:54:54 【问题描述】:

我需要禁止用户在某些通过开发人员菜单插入的 Excel 2007 组合框控件中按条件选择值。现在我只能显示/隐藏控件。

ActiveWorkbook.Worksheets("summary").Shapes("months").Visible = year <> ""

是否可以改为启用/禁用它?

【问题讨论】:

【参考方案1】:

如果您使用 ActiveX 组合框而不是 Forms 组合框,这不会产生“典型”的启用/禁用控件,但它确实会阻止用户访问它:

Sub ChangeState()

    Dim shp As Shape
    Set shp = ActiveWorkbook.Worksheets("summary").Shapes("months")
    shp.ControlFormat.Enabled = Not shp.ControlFormat.Enabled

End Sub

【讨论】:

【参考方案2】:

我找到了可以禁用组合框控件的内容

ActiveWorkbook.Worksheets("summary").DropDowns("months").Enabled = year <> ""

但不幸的是,它不会变灰以直观地显示其状态。

【讨论】:

【参考方案3】:

我曾经在使用 MS Access 时遇到过同样的问题。

状态(启用/禁用)与显示不同(背景颜色 = 灰色)

我过去解决这个问题的方法是两者兼而有之:

Dim enabled As Boolean
enabled = year <> ""

ActiveWorkbook.Worksheets("Sheet1").Shapes(1).Enabled = enabled

If enabled Then
    ActiveWorkbook.Worksheets("Sheet1").Shapes("months").BackColor = rgbGrey
Else
    ActiveWorkbook.Worksheets("Sheet1").Shapes("months").BackColor = rgbWheat
End If

【讨论】:

我相信 Shape 对象在 Excel 中没有 Enabled 属性,因此应该使用 Shapes(1).ControlFormat.Enabled。谢谢!

以上是关于启用/禁用 Excel 2007 组合框的主要内容,如果未能解决你的问题,请参考以下文章

在 access 2007 中编辑组合框

使用来自javascript的动态ID启用/禁用Telerik asp.net组合框

使用 Angular2 启用/禁用复选框字段

禁止/阻止选择 wpf 中禁用的组合框项目

组合框在 IE Extjs 中禁用时消失

Microsoft Access 组合框和 vba 代码 2007