खोज…
संकलन के समय में कोड व्यवहार बदलना
#Const
निर्देश का उपयोग कस्टम प्रीप्रोसेसर स्थिरांक को परिभाषित करने के लिए किया जाता है। इन्हें बाद में #If
द्वारा नियंत्रित किया जा सकता है #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
निर्देश केवल एकल कोड फ़ाइल (मॉड्यूल या वर्ग) के लिए प्रभावी है। इसे हर उस फ़ाइल के लिए घोषित किया जाना चाहिए जिसे आप अपने कस्टम #Const
में उपयोग करना चाहते हैं। वैकल्पिक रूप से, आप टूल >> [अपने प्रोजेक्ट का नाम] प्रोजेक्ट प्रॉपर्टीज में जाकर अपने प्रोजेक्ट के लिए वैश्विक रूप से #Const
घोषित कर सकते हैं। यह प्रोजेक्ट प्रॉपर्टीज़ डायलॉग बॉक्स लाएगा जहाँ हम निरंतर घोषणा दर्ज करेंगे। "सशर्त संकलन तर्क" बॉक्स में, [constName] = [value]
टाइप करें। आप उन्हें एक बृहदान्त्र के साथ अलग करके 1 स्थिरांक में प्रवेश कर सकते हैं, जैसे [constName1] = [value1] : [constName2] = [value2]
।
पूर्व-परिभाषित स्थिरांक
कुछ संकलन स्थिरांक पहले से ही परिभाषित हैं। जो मौजूद हैं वे उस कार्यालय संस्करण की बिटनेस पर निर्भर करेंगे जो आप VBA में चला रहे हैं। ध्यान दें कि Vba7 को Office के 64 बिट संस्करणों का समर्थन करने के लिए Office 2010 के साथ पेश किया गया था।
लगातार | 16 बिट | 32 बिट | 64 बिट |
---|---|---|---|
Vba6 | असत्य | यदि Vba6 | असत्य |
Vba7 | असत्य | यदि Vba7 | सच |
Win16 | सच | असत्य | असत्य |
Win32 | असत्य | सच | सच |
Win64 | असत्य | असत्य | सच |
मैक | असत्य | यदि मैक | यदि मैक |
ध्यान दें कि Win64 / Win32 कार्यालय संस्करण का संदर्भ देता है, न कि विंडोज संस्करण का। उदाहरण के लिए Win32 = 32-बिट ऑफिस में TRUE, भले ही OS विंडोज का 64-बिट संस्करण हो।
Declare Imports का उपयोग करना जो Office के सभी संस्करणों पर काम करता है
#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
कार्यालय के किन संस्करणों के लिए आपको समर्थन की आवश्यकता है, इसके आधार पर इसे थोड़ा सरल बनाया जा सकता है। उदाहरण के लिए, बहुत से लोग अभी भी कार्यालय के 16 बिट संस्करणों का समर्थन नहीं कर रहे हैं। 1994 में जारी 16 बिट कार्यालय का अंतिम संस्करण संस्करण 4.3 था , इसलिए निम्नलिखित घोषणा लगभग सभी आधुनिक मामलों (कार्यालय 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