如果variables未定义,是否有任何默认值分配给他们?

如果目标单元格的值大于80,我将创build一个代码来popup消息为“目标完成”。

但是,如果我在单元格中键入variables,消息popup。 为什么? 以及如何解决它?

Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$B$2" Then If Target.Value > 80 Then MsgBox "Goal Completed" End If End Sub 

谢谢你的时间!

我会使用If Val(Target.Value) > 80 Then MsgBox "Goal Completed"

总是最好打开工具,选项。 要求variables声明 ON。 如果不是这样,VBA将在第一次使用时声明该variables,如果在名称中input了错字,则会创build一个新variables,并且您可能会发现错误,例如alSetsa1Sets

至于你的问题:string被初始化为空,整数为0等。 对于巡视特定的行为,使用您的debugging器来检查variables中的内容并检查发生了什么。

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address <> "$B$2" Then _ Exit Sub If IsError(Target.Value) Then _ Exit Sub If Target.Value = "" Then _ Exit Sub If Not IsNumeric(Target.Value) Then _ Exit Sub If Target.Value > 80 Then MsgBox "Goal Completed" End If End Sub 

检查值实际上是一个数字,你可以使用类似于IsNumeric()但你可以得到一个误报,所以我会使用模式匹配这种事情:

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$2" Then If Target.Value Like Application.Rept("[0-9]", Len(Target.Value)) Then If Target.Value > 80 Then MsgBox "Goal Completed" End If End If End Sub 

注意我也使用了Worksheet_Change事件,而更适合于这种需求。