如果VBscript函数内的语句不起作用

时间:2013-07-04 12:15:29

标签: function debugging if-statement vbscript

我希望有人可以帮我调试下面的代码,因为我很困惑为什么会发生这种情况。

我有一个相当简单的VBScript,当用户登录到服务器/ PC时运行,它将根据其活动目录详细信息创建一些签名。我决定将签名创建的每个部分移动到一个函数中,以便在创建新签名时使事情变得更容易。

以下是我遇到问题的功能:

'Function to add job title and company
Function AddTitle
    objSelection.Font.Name = "Calibri"
    objSelection.Font.Bold = False
    objSelection.Font.Italic = False
    objSelection.Font.Size = "11"
    objSelection.Font.Color = RGB(0,0,0)
    If(strTitle) Then
        objSelection.TypeText strTitle & Chr(11)
    End If
    objSelection.TypeText strCompany & Chr (11)
End Function

现在,稍后在使用:

调用该函数时
'Add job title and company
AddTitle

忽略If语句中的部分。我知道有些变量需要全局定义才能在函数中工作,strTitle肯定是在我脚本的开头定义的。

我错过了一些非常明显的东西,因为如果取出if语句,if语句中的部分就能正常工作。同样,如果我要将if语句添加到我的脚本内联,并将其从函数中取出,它可以正常工作。

仅在从函数运行时才会出现。

1 个答案:

答案 0 :(得分:2)

显然,您的脚本中某处有一个全局On Error Resume Next,这会抑制行If(strTitle) Then通常会引发的“类型不匹配”错误。

strTitle可能包含一个字符串值,因此您不能像条件中的布尔值那样使用它。将行更改为以下内容:

If Trim(strTitle) <> "" Then

并且您的代码应该按预期工作。