【发布时间】:2016-12-05 07:23:41
【问题描述】:
这个超级简单的东西目前让我发疯。我有一个 If 语句来处理 CheckBox_Click() 事件,该事件应该根据 CheckBox 的状态执行两件事之一。虽然在选中该框时它可以正常工作,但在未选中该框时它不会做任何事情。我知道代码正在触发,只需放置一个 MsgBox 告诉我,但 If 语句不会启动。见以下代码:
Sub Chase_Visa_Click()
'Check new button status for action.
If Sheets("<Sheet Name>").Shapes("<CheckBox Name>").OLEFormat.Object.Value = 1 Then
MsgBox ("Box checked.")
ElseIf Sheets("<Sheet Name>").Shapes("CheckBox Name>").OLEFormat.Object.Value = 0 Then
MsgBox ("Box unchecked.")
End If
End Sub
根据我的阅读,unchecked 的值为 0。我也尝试过诸如“.Checked = False”之类的东西。非常感谢您的帮助。
【问题讨论】:
-
为什么使用
ElseIf而不是简单的Else? -
我曾考虑过这一点,但希望非常具体。我想我只是因为开放式的结局而感到害怕......如果我不能很快弄清楚这一点,我肯定会这样做,但我仍然很好奇为什么“0”不起作用。感谢您的建议。
-
看起来确实有些神秘。也许有简单的点击代码
MsgBox Sheets("<Sheet Name>").Shapes("CheckBox Name>").OLEFormat.Object.Value看看这个值是什么。 -
MSForms 的 MSDN help 表明 Value 属性将是 -1 或 True 表示选中,0 或 False 表示未选中,Null 表示既不选中也不选中
-
现象思维@JohnColeman!所以事实证明,未经检查的值是“-4146”,它模糊地敲响了警钟。现在我知道了答案,事实证明我已经在这个问题中看到了它,但我无法通过谷歌搜索正确的答案:stackoverflow.com/questions/11741836/…。我讨厌我创建了一个重复的问题......但它就在这里,它会从答案中受益,所以你想发布它,因为是你的伟大想法让我们到达那里吗?