2014-06-07 2 views
3

32 비트 시스템에서 잘 작동하는 꽤 복잡한 Excel VBA 프로젝트가 있습니다. 이제는 64 비트 시스템에서도 작동하도록 노력 중입니다. 모든 함수 선언을 해결했지만 데이터 형식이 Long 인 경우 문제가 발생합니다.Long 변수를 64 비트 및 32 비트 Excel VBA에서 작동

몇 가지 조사를하는, 나는 (은 MSDN 페이지에서)이 마련 :

LongPtr가 확인되는지 실제 데이터 형식이 실행되는 Office 버전에 따라 달라집니다

: LongPtr은 Office의 32 비트 버전에서이 으로 끝나고 Office의 64 비트 버전에서는 LongPtrLongLong으로 해결됩니다.

그러나

은 내가 사방 그렇게해야 내가

Dim x as LongPtr 

Dim x as Long 

에서 내 모든 Dim 문을 변경할 수 있음을 의미합니까? 아니면 막대기의 끝 부분을 잘못 잡았습니까? 그것이 작동하지 않거나이 변화가 피해야하는 상황이 있습니까?

+0

형식을 신고해야합니까? 변수를 Variant로 남겨두면 (형식을 선언하지 마십시오) 코드가 약간 느려지지만 VBA가 등 뒤에서 힘든 작업을 수행해야합니다. 달리 말하면, 그냥 'long'으로 남겨 두는게 어떨까요? 왜 32 비트 길이 일 필요가있을 때 변수를 64 비트로 만들려고합니까? 존재하지 않는 문제를 해결하고 있는지 궁금합니다. 어쩌면 당신은 '긴'이외의 것을 필요로한다고 생각하면 더 명확하게 설명 할 수 있습니다 (작은 코드 예제로). – Floris

+0

당신은 그렇게 할 필요가 없습니다. 그냥 ['포인터와 핸들에 LongPtr 사용] (http://msdn.microsoft.com/en-us/library/office/gg251378%28v=office.15%29.aspx) –

+0

@ LưuVĩnhPhúc에 동의합니다. 끝내려는 생각이야. – Floris

답변

-1

LongLong을 시도해보십시오. 사양에서 LongLong이 32를 대신하지만 Long을 대신하는 것처럼 보입니다.

+2

아니요, 32 비트 값만 원하면 LongLong이 필요하지 않습니다. 그리고 그것은 [64 비트 플랫폼에서만 유효한 선언 된 유형입니다] (http://msdn.microsoft.com/en-us/library/office/gg278463%28v=office.15%29.aspx) –

관련 문제