禁用用户窗体上的button

我想弄清楚如果我的电子表格中的某个单元格等于一定的数字如何禁用我的userForm中的button。 我试过下面的代码,但它不工作。

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 

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

要testing它,只需创build一个新的表单并添加这个代码,你会发现它应该工作。 也许你在IF子句中有问题?

另外,在禁用之前不需要select形状, 只是马上禁用它。

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

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

我有一个名为cmdADAMFields下拉框的用户窗体,我不希望我的提交button被称为FieldsSubmitButton被启用,直到我从下拉框中select的东西。

我不得不把我的论点分解成两个不同的私人潜艇与一个更大的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 

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

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

对于button,您可以select普通button (属性Enabled = False和属性Visible = true), 禁用button (属性Enabled = False和属性Visible = true)和不可见button (属性Enabled = False和属性Visible = False)在大多数情况下是一个更清洁的界面。

关于文本框,除正常状态, 禁用状态和不可见状态外,还有一个locking状态,该状态已启用且可见,但不能被用户编辑。 (财产locking =真)

locking的控件只能通过VBA代码进行更改。 例如,某人可以包含date文本框,使用带Calendar控件的辅助popupdate表单来填充date文本框。