Vba 通过功能禁用按钮?
当前正在将vba与excel 2007一起使用 我目前正在测试函数的功能,在使用按钮时有点卡住了。我有两个按钮,分别命名为1和2。按下其中一个按钮调用一个函数Calc,每个按钮都传递其他名称的变量。详情如下:Vba 通过功能禁用按钮?,vba,excel,excel-2007,Vba,Excel,Excel 2007,当前正在将vba与excel 2007一起使用 我目前正在测试函数的功能,在使用按钮时有点卡住了。我有两个按钮,分别命名为1和2。按下其中一个按钮调用一个函数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 Funct
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
Private Sub Reset_Click()
ONE.Enabled = True
TWO.Enabled = True
End Sub
我的理解是,按下按钮1将变量2传递给函数Calc,然后禁用按钮2
我还有一个标有重置的按钮,其作用如下:
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
Private Sub Reset_Click()
ONE.Enabled = True
TWO.Enabled = True
End Sub
结果是,如果我按下按钮一,按钮二变灰并显示“禁用”。但是,当我按下重置按钮时,它保持灰色。调查按钮的属性可以发现它实际上并没有被禁用。我安装了另一个按钮,它直接禁用按钮2,即2.Enabled=False,而不是使用变量
使用“直接”按钮直接禁用按钮时,重置将按应启用按钮,并且属性反映该按钮已禁用
有人知道为什么使用变量禁用这样的按钮会导致虚幻的禁用吗?
更好的是,如何克服这个问题?如果您在通过不正确的引用调用时遇到问题,那么请使用静态参数
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
我运行了你的代码,没有发现不需要的beheaviour。在Excel 2007和Excel 2016中,按下“重置”按钮将始终启用其他按钮来运行代码,并具有与Frank Zed相同的行为。