我希望有人可以帮我调试下面的代码,因为我很困惑为什么会发生这种情况。
我有一个相当简单的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语句添加到我的脚本内联,并将其从函数中取出,它可以正常工作。
仅在从函数运行时才会出现。
答案 0 :(得分:2)
显然,您的脚本中某处有一个全局On Error Resume Next
,这会抑制行If(strTitle) Then
通常会引发的“类型不匹配”错误。
strTitle
可能包含一个字符串值,因此您不能像条件中的布尔值那样使用它。将行更改为以下内容:
If Trim(strTitle) <> "" Then
并且您的代码应该按预期工作。