2013-07-04 2 views
0

나는 왜 이런 일이 일어나고 있는지 혼란스러워하기 때문에 누군가 아래 코드를 디버깅 할 수 있기를 바라고 있습니다.VBscript 함수 내의 문이 작동하지 않는 경우

사용자가 서버/PC에 로그온 할 때 실행되는 상당히 간단한 VBScript가 있는데, 이는 활성 디렉토리 세부 정보를 기반으로 일부 서명을 생성합니다. 새로운 서명을 만들 때 좀 더 쉽게하기 위해 서명 생성의 각 섹션을 함수로 이동하기로 결정했습니다. 사용하여 나중에 함수를 호출 할 때

'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 문을 스크립트 인라인에 추가하고 함수에서 빼내면 제대로 작동합니다.

함수에서 실행 중일 때만입니다.

답변

2

If(strTitle) Then이 일반적으로 발생시키는 "유형 불일치"오류를 억제하는 어딘가에 스크립트의 어딘가에 On Error Resume Next이 있습니다.

strTitle에는 문자열 값이 포함되어있을 수 있으므로 조건의 부울 값처럼 사용할 수 없습니다. 다음과 같이 변경하십시오.

If Trim(strTitle) <> "" Then 

코드가 예상대로 작동해야합니다.

+0

안 사, 절대 보석! 이것은 VBScript에서 처음 작업 한 것으로 스크립트의 기본이 예제 코드에서 제외되었습니다. 실제로 On Error Resume Next가 전역 적으로 설정되어 있으며 PHP로 작업 한 부울 조건에 대해 알고 있어야합니다. 다시 한 번 감사드립니다! – Eds

관련 문제