禁用userForm上的按钮

时间:2011-04-05 17:39:32

标签: excel vba userform

如果我的电子表格中的某个单元格等于某个数字,我正在试图找出如何禁用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

3 个答案:

答案 0 :(得分:5)

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

要测试它,只需创建一个新表单并添加此代码,您将看到它应该有效。也许你在IF条款中遇到了问题?

此外,您无需在禁用之前选择形状;马上就禁用它。

Private Sub UserForm_Initialize()

    CommandButton1.Enabled = False

End Sub

答案 1 :(得分:1)

我知道这已经过时了,但是我想通过这个线程试图解决我的问题,并找到了一个解决方案,这里没有提到。所以,如果有人像我一样到达这里,并且这并没有让他们到达他们需要去的地方,我认为这可能会有所帮助。

我有一个带有名为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

答案 2 :(得分:0)

设置已启用属性的正确位置是激活事件(与显示方法相关联)而不是初始化事件(与加载指令相关联)。 当AL10单元格> = 10时,以下代码禁用按钮 CommandButton1

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

对于按钮,您可以选择普通按钮(属性已启用 = False且属性可见 = true),已禁用按钮< / em>(属性已启用 = False且属性可见 = true)和隐藏按钮(属性已启用 = False和属性可见 = False),在大多数情况下它是一个更干净的界面。

关于文本框,除普通已禁用不可见状态外,还有已锁定状态,已启用且可见,但无法进行用户编辑。 (属性已锁定 = True)

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