目前正在使用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,而不是使用变量来执行此操作。
当使用直接按钮直接禁用该按钮时,重置会启用该按钮,并且属性反映该按钮已被禁用。
有谁知道为什么使用变量来禁用这样的按钮会导致虚幻的禁用? 更好的是,如何克服这个问题?
答案 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