2014-11-07 6 views
1

이것은 매우 기본적인 질문 일 수 있습니다. 그러나 나는 검색을 해왔고 설명을 찾을 수 없습니다. 나는 VBA 대화 상자에 대한 API 기능을 가지고 노는 그리고 난 여기에 정의 된 바와 같이 나는 CreateDialog API 함수를 사용하려고 할 수 있습니다 창 스타일에 대한 상수를 선언 할 : http://msdn.microsoft.com/en-us/library/windows/desktop/ms632600(v=vs.85).aspxVBA에서 창 스타일 상수 정의 (0x00000000 vs & H000)

은 일반적으로 내가 VBA에서 창 상수 참조 &H000 또는 이와 비슷한 값을 가진 long 타입으로 정의됩니다. 그러나이 상수에 대한 &H000 형식 값을 찾을 수 없으며 0x00000000 형식 값만 찾을 수 있습니다.

예를 들어, OpenFileName 설명서 here을보고 플래그로 스크롤하십시오. 상수 식은 0x00000000 형식의 값으로 나열됩니다. 그러나 CommonDialog 상수 here을 보면 &H000 형식의 값과 함께 나열된 동일한 상수를 볼 수 있습니다.

적어도 세 가지 질문이 있습니다.
0x0000000 값은 무엇을 나타내는가?
& H000 값은 무엇을 나타내는가?
그들 사이에 변환 할 수있는 방법이 있습니까?

왜냐하면 나는 Public Const WS_BORDER as Long=0x00800000L을 선언하려고했기 때문에 "x"가 예상되는 말의 끝 부분에 구문 영역을 가져 왔습니다.

+0

. 그러나 표현의 끝에있는 "L"은 여전히 ​​구문 오류를 제공합니다. 예 : 나는'Long = 0x00800000L'을'Long = & H00800000L'로 변경했고, 문장의 끝 부분에 "L"이 붙는 것에 대한 문법 오류를 말했습니다. – CBRF23

+1

'L' 접미사는 C 관용어로 VBA에 그냥 놓으십시오 :' Public Const WS_BORDER as Long = H & 00800000' –

+0

흥미 롭습니다. 나는 약간의 독서를해야 할 것이다. 나는 당신이 게시하고 L 접미어를 &로 변환하기 직전에 [이] (http://support².microsoft.com/kb/161304?ln=end)를 발견했으나 L을 삭제하는 것과 동일한 작업을 수행합니다. VB가 자동적으로'H & 00800000' 또는'H & 00800000 &'를'& H800000'으로 변환하는 것이 흥미로운 부분입니다. – CBRF23

답변

1

0x...L 형식은 C++ 용 here으로 설명됩니다 (다른 언어에서도 마찬가지입니다). 0x은 숫자가 16 진수임을 나타내며 L은 컴파일러에서 Long으로 해석해야 함을 나타냅니다.

해당하는 VBA 구문은 &H...&입니다. 여기서 &H은 16 진수이고 &Long을 나타냅니다. 그래서 예를 들면

, 명세서 :

Public Const WS_BORDER as Long = 0x00800000L 

가되어야합니다 아주 간단 소리

Public Const WS_BORDER as Long = &H00800000& 
+0

'& H .... &'형식을 시도했지만, VBA는 그 줄을 벗어나 자마자 자동으로 줄여서 재미있는 줄 알았다. – CBRF23

+1

VBA는 선행 0을 제거하지만 괜찮습니다. 여전히 동일한 수입니다. – Blackhawk