当语句为false时,VBA程序不会提供正确的文本

时间:2017-06-23 07:01:35

标签: vba excel-vba excel

我的程序是假设文本的长度是否在1到31之间。

如果长度不在1到31之间,它将在e28返回“FALSE”。

我的问题是无论文本的长度如何,它总是返回“TRUE”请告诉我为什么会发生这种情况。

x = Range("b26").Value

count = Len(x) - Len(Replace(x, "-", ""))

If Len(x) - count > 1 & Len(x) - count < 32 Then
    MsgBox Len(x) - count
    Range("e28").Value = "TRUE"
Else
    Range("e28").Value = "FALSE"
End If

1 个答案:

答案 0 :(得分:3)

您需要在And条件中使用&而不是If

&是VBA中的字符串连接运算符,在此处不合适。

True在VBA中评估为-1的事实也无济于事,&也有优先级And不同。 )