수색…
컴파일시 코드 동작 변경
#Const
지시어는 사용자 정의 전처리 상수를 정의하는 데 사용됩니다. 이것들은 나중에 컴파일되고 실행될 코드 블록을 제어하기 위해 #If
사용됩니다.
#Const DEBUGMODE = 1
#If DEBUGMODE Then
Const filepath As String = "C:\Users\UserName\Path\To\File.txt"
#Else
Const filepath As String = "\\server\share\path\to\file.txt"
#End If
결과적으로 filepath
값은 "C:\Users\UserName\Path\To\File.txt"
됩니다. #Const
줄을 제거하거나 #Const DEBUGMODE = 0
변경하면 filepath
가 "\\server\share\path\to\file.txt"
됩니다.
#Const Scope
#Const
지시문은 단일 코드 파일 (모듈 또는 클래스)에만 유효합니다. 각각 신고해야하고 모든 당신이 당신의 사용자 정의 상수를 사용하고자하는 파일. 또는, 당신은 선언 할 수 #Const
도구 >> [당신의 프로젝트 이름] 프로젝트 속성으로 이동하여 프로젝트에 대해 전역. 그러면 상수 선언을 입력 할 프로젝트 속성 대화 상자가 나타납니다. "조건부 컴파일 인수"상자에 [constName] = [value]
합니다. [constName1] = [value1] : [constName2] = [value2]
와 같이 콜론으로 구분하여 둘 이상의 상수를 입력 할 수 있습니다.
미리 정의 된 상수
일부 컴파일 상수는 이미 사전 정의되어 있습니다. 어떤 버전이 존재하는지는 VBA를 실행중인 Office 버전의 bitness에 따라 달라집니다. Vba7은 Office 2010과 함께 도입되어 64 비트 버전의 Office를 지원합니다.
일정한 | 16 비트 | 32 비트 | 64 비트 |
---|---|---|---|
Vba6 | 그릇된 | Vba6 | 그릇된 |
Vba7 | 그릇된 | Vba7 | 참된 |
Win16 | 참된 | 그릇된 | 그릇된 |
Win32 | 그릇된 | 참된 | 참된 |
Win64 | 그릇된 | 그릇된 | 참된 |
맥 | 그릇된 | Mac의 경우 | Mac의 경우 |
Win64 / Win32는 Windows 버전이 아니라 Office 버전을 나타냅니다. 예를 들어 OS가 64 비트 버전의 Windows 인 경우에도 32 비트 Office에서 Win32 = TRUE입니다.
모든 버전의 Office에서 작동하는 Import Declare 사용
#If Vba7 Then
' It's important to check for Win64 first,
' because Win32 will also return true when Win64 does.
#If Win64 Then
Declare PtrSafe Function GetFoo64 Lib "exampleLib32" () As LongLong
#Else
Declare PtrSafe Function GetFoo Lib "exampleLib32" () As Long
#End If
#Else
' Must be Vba6, the PtrSafe keyword didn't exist back then,
' so we need to declare Win32 imports a bit differently than above.
#If Win32 Then
Declare Function GetFoo Lib "exampleLib32"() As Long
#Else
Declare Function GetFoo Lib "exampleLib"() As Integer
#End If
#End If
지원해야하는 Office 버전에 따라 조금 더 간단해질 수 있습니다. 예를 들어 많은 사람들이 여전히 16 비트 버전의 Office를 지원하고 있습니다. 16 비트 사무실의 마지막 버전은 1994 년에 출시 된 4.3 버전 이었으므로 Office 2007을 포함한 거의 모든 최신 사례에서 다음 선언만으로도 충분합니다.
#If Vba7 Then
' It's important to check for Win64 first,
' because Win32 will also return true when Win64 does.
#If Win64 Then
Declare PtrSafe Function GetFoo64 Lib "exampleLib32" () As LongLong
#Else
Declare PtrSafe Function GetFoo Lib "exampleLib32" () As Long
#End If
#Else
' Must be Vba6. We don't support 16 bit office, so must be Win32.
Declare Function GetFoo Lib "exampleLib32"() As Long
#End If
Office 2010 이전 버전을 지원할 필요가없는 경우이 선언은 올바르게 작동합니다.
' We only have 2010 installs, so we already know we have Vba7.
#If Win64 Then
Declare PtrSafe Function GetFoo64 Lib "exampleLib32" () As LongLong
#Else
Declare PtrSafe Function GetFoo Lib "exampleLib32" () As Long
#End If