【发布时间】:2010-11-29 11:54:54
【问题描述】:
我需要禁止用户在某些通过开发人员菜单插入的 Excel 2007 组合框控件中按条件选择值。现在我只能显示/隐藏控件。
ActiveWorkbook.Worksheets("summary").Shapes("months").Visible = year <> ""
是否可以改为启用/禁用它?
【问题讨论】:
标签: excel excel-2007 controls vba
我需要禁止用户在某些通过开发人员菜单插入的 Excel 2007 组合框控件中按条件选择值。现在我只能显示/隐藏控件。
ActiveWorkbook.Worksheets("summary").Shapes("months").Visible = year <> ""
是否可以改为启用/禁用它?
【问题讨论】:
标签: excel excel-2007 controls vba
如果您使用 ActiveX 组合框而不是 Forms 组合框,这不会产生“典型”的启用/禁用控件,但它确实会阻止用户访问它:
Sub ChangeState()
Dim shp As Shape
Set shp = ActiveWorkbook.Worksheets("summary").Shapes("months")
shp.ControlFormat.Enabled = Not shp.ControlFormat.Enabled
End Sub
【讨论】:
我找到了可以禁用组合框控件的内容
ActiveWorkbook.Worksheets("summary").DropDowns("months").Enabled = year <> ""
但不幸的是,它不会变灰以直观地显示其状态。
【讨论】:
我曾经在使用 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
【讨论】: