2016-10-20 1 views
0

대부분의 컴퓨터에서 VBA는 이른바 형식 불일치 오류 인 오류 13을 무시한다는 것을 알게되었습니다.VBA가 형식 불일치 오류를 무시하도록 설정되어 있습니까?

그러나 지금은 형식 불일치를 무시하지 않는 PC를 보았습니다 오류. 그래서, 내 질문은 :

내 컴퓨터가 형식 불일치 오류를 무시하는 것을 막을 수있는 설정이 있습니까?

일반적으로 무시되는 유형 불일치 오류의 예는이 PC에 없습니다.

?msgbox (1,,22) 
?Application.Version = 12# 

은 여기에 대한 통찰력을 감사합니다 -을 포함하여 어떤 형식이 일치를 가지고 코드를 찾을 수있는 가장 좋은 방법입니다하지만 여전히 컴파일하고 대부분의 시스템에서 실행?

+1

실제로 "유형 불일치"오류가 발생합니까 아니면 형식 불일치 오류로 보이는 무언가를 얻는다 고 말하는 것입니까? 두 예제 모두 타입 불일치가 발생하지 않아야합니다. Msgbox는 정수를 문자열에 행복하게 캐스팅해야합니다 (MsgBox를 표시 한 후에'? '는 반환 값을 표시합니다). 그리고'Application.Version = 12 #'는 버전을 12 #와 비교해야합니다. (버전을 double로 변환 할 것인지 12 #을 문자열로 변환 할 것인지는 확실하지 않지만 둘 다 유효합니다) True 또는 False를 반환하면 표시됩니다. '? '. – YowE3K

+0

해당 진술의 성공과 실패를보고있는 Office 버전은 무엇입니까? – jsheeran

+0

안녕하세요 ... Application.Version 예제는 실제입니다. 두 PC 모두 Office 2010으로 Windows 10을 실행 중입니다. VBA는 MS Word에서 실행되고있었습니다. 내 PC는 Application.Version 예제에서 False를 반환하고, 다른 PC는 실제로 오류 13을 throw하고, 유형 일치는 – SlowLearner

답변

0

누구나이 문제를 우연히 발견합니다. 유형 불일치를 무시할 수있는 방법이나 설정을 찾지 못했습니다. 몇 가지 종류의 Option EnforceTypes가있을 수 있다고 생각했지만, 분명히 아닙니다.

결국 문제가되는 코드를 해당 유형으로 명시 적으로 전송해야합니다. 예 : cStr, cLng 등을 사용합니다.

이 1 대의 특정 PC가 오류를 던진 이유를 알 수는 없습니다.

지금 수정되었습니다.

+0

* VBA는 불일치 유형 불일치 오류 인 오류 13을 무시합니다. * 이것은 원격으로도 사실에 가깝지 않습니다 - 실제로 YowE3k가 위의 주석에서 언급했듯이 그 반대가 사실입니다. 암시 적 타입 변환 때문에 어떤 예제 코드도 어느 컴퓨터에서도 오류를 일으키지 않아야합니다. 따라서 VBA는 " 무시할 오류가 없으므로 오류가 발생하지 않은 컴퓨터에서 오류를 무시합니다. 문제는 문제가있는 PC의 다른 곳에서 발생합니다. 불행히도 문제를 즉시 해결할 수있어서 기쁩니다. , 비록 :) –

+1

나는 당신의 요점을 @DavidZemens 걸리지 만 * VBA IDE는 오류 13을 내뿜고 형식 불일치라고 불렀다. 내 생각에 암시 적 변환이 없다면 오류가 발생한다. 어떤 이유에서든 ... 암시가 없었기 때문일 수 있습니다. t 변환 (하지만 다른 것) - 불행히도 그것은 수수께끼로 남을 것입니다. 고마워, 나도 기뻐.변경된 코드의 명시 적 형 변환은 기술적으로 잘못되어 있지 않으므로 오류가 아닙니다. 오류 13. ;-) – SlowLearner