1

如果我的电子表格中的某个单元格等于某个数字,我试图弄清楚如何禁用我的 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
4

3 回答 3

6

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

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

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

Private Sub UserForm_Initialize()

    CommandButton1.Enabled = False

End Sub
于 2011-04-05T18:30:53.170 回答
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
于 2016-09-23T20:21:05.923 回答
0

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

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

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

关于文本框,除了正常禁用不可见状态外,还有一个锁定状态,即启用和可见,但不能被用户编辑。(属性锁定= True)

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

于 2012-11-15T18:04:46.097 回答