Excel VBA:字符串比较不起作用

问题描述

我正在尝试将 activeSheet 代码名称与简单字符串进行比较,但结果始终为真。我调试过,变量值不同。

Sub Button_Supprimer()
    
Dim a,b As String
a = CStr(ActiveSheet.CodeName)
b = "Sheet1"

If (a = b) Then:
    frmSupprimer.Caption = "Supprimer un matériel"
    'frmSupprimer.UserForm_Initialize ("Matériel")
    frmSupprimer.Show
End               
End Sub

result

解决方法

结果并不总是正确的,只是您的代码中没有任何语句实际上是有条件的。

通常应该忘记 : 指令分隔符的存在,并将其留给您可以从 立即 窗格 (Ctrl+ G).

通过用冒号终止 If {condition} Then,您使条件表达式只是一条空指令。

如果没有它,代码将停止编译,并且会出现“If block without End If”编译错误。

条件代码块的正确语法如下:

If {condition} Then
    {conditional statements}
End If

注意End指令本质上是一个用于终止程序执行的核选项;全局变量重置为其默认值,执行上下文终止:经验法则,您希望让执行到达 End Sub 语句并让 VBA 运行时正常展开其调用堆栈:End 指令停止一切都在原地踏步——而且你实际上需要这样做是非常非常罕见的。