खोज…


संकलन के समय में कोड व्यवहार बदलना

#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 प्रोजेक्ट गुण संवाद

पूर्व-परिभाषित स्थिरांक

कुछ संकलन स्थिरांक पहले से ही परिभाषित हैं। जो मौजूद हैं वे उस कार्यालय संस्करण की बिटनेस पर निर्भर करेंगे जो आप 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


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow