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

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

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

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

【问题讨论】:

    标签: excel excel-2007 controls vba


    【解决方案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。谢谢!
        猜你喜欢
        • 2011-02-14
        • 1970-01-01
        • 2012-06-22
        • 2019-05-07
        • 1970-01-01
        • 1970-01-01
        • 2015-02-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多