通过功能禁用按钮?

时间:2016-02-17 07:24:24

标签: vba excel-vba excel-2007 excel

目前正在使用vba和excel 2007 ...

我目前正在测试功能的功能,并且使用按钮有点困难。我有两个按钮,名为ONE和TWO。按下任一调用函数Calc,每个按钮传递其他名称的变量。如下:

Private Sub ONE_Click()
Calc TWO
End Sub

Private Sub TWO_Click()
Calc ONE
End Sub

Function Calc(B As CommandButton)
B.Enabled = False
End Function

我的理解是按下按钮ONE将变量TWO传递给Function Calc,然后禁用按钮TWO。

我还有一个标记为Reset的按钮,其作用如下:

Private Sub Reset_Click()
ONE.Enabled = True
TWO.Enabled = True
End Sub

结果,如果我按下按钮ONE,按钮TWO灰色并显示"禁用"。但是,当我按下重置按钮时,它会保持灰色。调查按钮的属性表明它实际上没有被禁用。我安装了另一个直接禁用按钮2的按钮,即TWO.Enabled = False,而不是使用变量来执行此操作。

当使用直接按钮直接禁用该按钮时,重置会启用该按钮,并且属性反映该按钮已被禁用。

有谁知道为什么使用变量来禁用这样的按钮会导致虚幻的禁用? 更好的是,如何克服这个问题?

1 个答案:

答案 0 :(得分:1)

如果您在调用直接引用时遇到问题,请使用静态参数。

Private Sub ONE_Click()
    Calc "TWO"
End Sub

Private Sub TWO_Click()
    Calc "ONE"
End Sub

现在您可以使用该参数来操作对象。

Function Calc(B As String)
If B = "ONE" Then
    ONE.Enabled = False
ElseIf B = "TWO" Then
    TWO.Enabled = False
Else
    Exit Function
End If
End Function