【问题标题】:Disable button on a userForm禁用用户窗体上的按钮
【发布时间】:2016-09-24 04:21:05
【问题描述】:

如果我的电子表格中的某个单元格等于某个数字,我正在尝试弄清楚如何禁用我的 userForm 中的按钮。我尝试了下面所述的代码,但它不起作用。

Private Sub UserForm_Initialize()
Label2 = Sheets("DATA").Range("AM2").Value
Label4 = Sheets("DATA").Range("AO2").Value
Label7 = Format(Sheets("DATA").Range("R8").Value, "Currency")

If Sheets("DATA").Range("AL10").Value = 10 Then
ActiveSheet.Shapes("CommandButton1").Select
UserFormact_Upgrade.CommandButton1.Enabled = False

Else


End If

End Sub

【问题讨论】:

    标签: excel vba userform


    【解决方案1】:

    您的代码应该可以正常工作,因为您走在正确的道路上。

    要对其进行测试,只需创建一个新表单并添加此代码,您就会看到它应该可以工作。也许您在 IF 子句中遇到问题?

    此外,您不需要在禁用之前选择形状;立即禁用它。

    Private Sub UserForm_Initialize()
    
        CommandButton1.Enabled = False
    
    End Sub
    

    【讨论】:

      【解决方案2】:

      我知道这是旧的,但是到这个线程试图解决我的问题,并找到了一个这里没有提到的解决方案。因此,如果有人像我一样来到这里,而这并没有把他们带到他们需要去的地方,我认为这可能会有所帮助。

      我有一个带有名为 cmdADAMFields 的下拉框的用户表单,我不希望在从下拉框中选择某些内容之前启用名为 FieldsSubmitButton 的提交按钮。

      我不得不将我的论点分解为两个不同的私有子语句与一个更大的 If-Then-Else 语句。

      首先,我说:

      Private Sub UserForm_Activate()
      If cmbADAMFields.ListIndex = -1 Then FieldsSubmitButton.Enabled = False
      End Sub
      

      然后当我的下拉私有子的值改变时,我写道:

      Private Sub cmbADAMFields_Change()
      FieldsSubmitButton.Enabled = True
      End Sub
      

      【讨论】:

        【解决方案3】:

        设置 Enabled 属性的正确位置是在 Activate 事件中(与 Show 方法相关联)而不是 Initialize 事件(与 Load 指令相关联)。 以下代码在 AL10 单元格 >= 10 时禁用按钮 CommandButton1

                Private Sub UserForm_Activate()
                   CommandButton1.Enabled = ( Sheets("DATA").Range("AL10") < 10 )
                End Sub
        

        对于按钮,您可以选择普通按钮(属性启用=False,属性可见=true)、禁用按钮(属性 Enabled=False 和属性 Visible=true)和 不可见按钮(属性 Enabled=False和属性 Visible=False),在大多数情况下它是一个更干净的界面。

        关于文本框,除了normaldisabledinvisible状态,还有一个locked状态,即已启用且可见,但不能由用户编辑。 (属性锁定 = True)

        只能通过 VBA 代码更改锁定的控件。例如,某人可以包含日期文本框,它是使用带有日历控件的辅助弹出日期表单来填充的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-11-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-12
          • 2012-11-13
          • 1970-01-01
          相关资源
          最近更新 更多