Fra*_*Zed 6 excel vba excel-2007 excel-vba
目前使用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
Run Code Online (Sandbox Code Playgroud)
我的理解是按下按钮ONE将变量TWO传递给Function Calc,然后禁用按钮TWO.
我还有一个标记为Reset的按钮,其作用如下:
Private Sub Reset_Click()
ONE.Enabled = True
TWO.Enabled = True
End Sub
Run Code Online (Sandbox Code Playgroud)
结果如果我按下按钮ONE,按钮TWO灰显并显示"禁用".但是,当我按下重置按钮时,它会保持灰色.调查按钮的属性表明它实际上没有被禁用.我安装了另一个直接禁用按钮2的按钮,即TWO.Enabled = False,而不是使用变量来执行此操作.
使用直接按钮直接禁用按钮时,重置会启用按钮,并且属性反映按钮已禁用.
有谁知道为什么使用变量来禁用这样的按钮会导致虚幻的禁用?更好的是,如何克服这个问题?
如果通过间接引用调用时遇到问题,请使用静态参数。
Private Sub ONE_Click()
Calc "TWO"
End Sub
Private Sub TWO_Click()
Calc "ONE"
End Sub
Run Code Online (Sandbox Code Playgroud)
现在您可以使用该参数来作用于对象。
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
Run Code Online (Sandbox Code Playgroud)