0

我希望有人可以帮助我调试以下代码,因为我对它发生的原因感到困惑。

我有一个相当简单的 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 语句添加到我的脚本内联,并将其从函数中取出,它可以正常工作。

仅在从函数运行时。

4

1 回答 1

2

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

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

If Trim(strTitle) <> "" Then

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

于 2013-07-04T13:10:17.047 回答