मैं ऐसा करना चाहते हैं, लेकिन यह संकलन नहीं होगा:क्या वीबीए में सार्वजनिक चर घोषित करना और डिफ़ॉल्ट मान असाइन करना संभव है?
Public MyVariable as Integer = 123
इस को प्राप्त करने का सबसे अच्छा तरीका क्या है?
मैं ऐसा करना चाहते हैं, लेकिन यह संकलन नहीं होगा:क्या वीबीए में सार्वजनिक चर घोषित करना और डिफ़ॉल्ट मान असाइन करना संभव है?
Public MyVariable as Integer = 123
इस को प्राप्त करने का सबसे अच्छा तरीका क्या है?
नेट हमें खराब कर दिया है में आरंभ कर सकता है :) आपका घोषणा VBA के लिए मान्य नहीं है।
केवल स्थिरांक को एप्लिकेशन लोड पर एक मूल्य दिया जा सकता है। आप उन्हें इतना तरह की घोषणा:
Public Const APOSTROPHE_KEYCODE = 222
यहाँ मेरी VBA परियोजनाओं में से एक से एक नमूना घोषणा है:
आप कुछ है जहाँ आप एक सार्वजनिक चर घोषित लिए देख रहे हैं और उसके बाद करना चाहते हैं इसके मूल्य को आरंभ करें, आपको वर्कबुक_ ओपन उप बनाने की आवश्यकता है और वहां अपना प्रारंभिक कार्य करें। उदाहरण:
Private Sub Workbook_Open()
Dim iAnswer As Integer
InitializeListSheetDataColumns_S
HideAllMonths_S
If sheetSetupInfo.Range("D6").Value = "Enter Facility Name" Then
iAnswer = MsgBox("It appears you have not yet set up this workbook. Would you like to do so now?", vbYesNo)
If iAnswer = vbYes Then
sheetSetupInfo.Activate
sheetSetupInfo.Range("D6").Select
Exit Sub
End If
End If
Application.Calculation = xlCalculationAutomatic
sheetGeneralInfo.Activate
Load frmInfoSheet
frmInfoSheet.Show
End Sub
सुनिश्चित करें कि आप कार्यपुस्तिका में उप घोषित ही वस्तु बनाओ:
+1! – CaBieberach
थोड़ा समय हो गया है, लेकिन मेरा मानना है कि यह हो रहा है:
Public MyVariable as Integer
MyVariable = 123
यह संकलित नहीं करता है या तो मुझे डर है। ऐसा लगता है कि यह बहुत लंबा रहा है! – David
विशिष्ट रूप से, 'सार्वजनिक' घोषणा * बाहरी * दिनचर्या ('उप' या 'फंक्शन'), मान असाइनमेंट * के अंदर * होनी चाहिए। – RolandTumble
सुनिश्चित करें कि आप जानते हैं, लेकिन अगर इसकी एक निरंतर तो const MyVariable as Integer = 123
अन्यथा भाग्य के अपने बाहर; चर को कहीं और एक प्रारंभिक मूल्य असाइन किया जाना चाहिए।
आप किए जा सकेंगे:
public property get myIntegerThing() as integer
myIntegerThing= 123
end property
एक कक्षा मॉड्यूल में
तो विश्व स्तर पर इसे बनाने के;
public cMyStuff as new MyStuffClass
तो cMyStuff.myIntegerThing
तुरंत उपलब्ध है।
बेहतर मॉड्यूल जोड़ना और इस मॉड्यूल के अंदर इन गुणों को परिभाषित करना होगा। मैं 'ग्लोबल्स' नामक एक मॉड्यूल बनाता हूं और इस मॉड्यूल के अंदर 'प्रॉपर्टी गेट' को परिभाषित करता हूं और यह एक आकर्षण की तरह काम करता है। संपत्ति पूर्णांक PSIStartRow = शीट ("एफओबी मूल्य")। रेंज ("एफ 1")। मूल्य समाप्ति संपत्ति के रूप में PSIStartRow() जाओ संपत्ति स्ट्रिंग PSIStartCell = "बी" और PSIStartRow समाप्ति संपत्ति – Achilles
रूप PSIStartCell() जाओ उपरोक्त टिप्पणी में कोड उलझ गया। मैं इसे नीचे पोस्ट कर दूंगा। आपके उत्तर की बहुत ग्राफिकल/शैक्षिक भावना के लिए – Achilles
आप सामान्य घोषणाओं में चर परिभाषित कर सकते हैं और फिर इसे अपने पर्यावरण में आग लगने वाली पहली घटना में शुरू कर सकते हैं।
वैकल्पिक रूप से, आप अपने आप को प्रासंगिक गुणों के साथ एक वर्ग बनाने और उन्हें आरंभ विधि
बस आपको एक अलग कोण पेशकश करने के लिए -
मुझे लगता है यह एक अच्छा विचार सार्वजनिक बनाए रखने के लिए नहीं है फ़ंक्शन कॉल के बीच चर। उपयोग करने के लिए आपको आवश्यक किसी भी चर को सब्स और फ़ंक्शंस में संग्रहीत किया जाना चाहिए और पैरामीटर के रूप में पारित किया जाना चाहिए। एक बार कोड चलने के बाद, आपको वीबीए प्रोजेक्ट को किसी भी चर के मानों को बनाए रखने की उम्मीद नहीं करनी चाहिए।
इसका कारण यह है कि कार्यपुस्तिका का उपयोग करते समय अनजाने में वीबीए परियोजना को रीसेट कर सकते हैं। जब ऐसा होता है, तो कोई भी सार्वजनिक चर 0 पर रीसेट हो जाता है।
यदि आपको अपने उप-कार्यों के बाहर संग्रहीत करने के लिए एक मूल्य की आवश्यकता है, तो मैं लगातार किसी भी जानकारी के लिए नामित श्रेणियों के साथ एक छिपी वर्कशीट का उपयोग करने की अनुशंसा करता हूं।
यह काफी समय हो गया है, लेकिन यह आप को संतुष्ट कर सकते हैं:
Public MyVariable as Integer: MyVariable = 123
इसके बाद से आप चर नाम फिर से टाइप थोड़ा बदसूरत है, लेकिन यह एक ही पंक्ति में है।
यह संकलन त्रुटि उत्पन्न करता है: अमान्य बाहरी प्रक्रिया –
जैसा ऊपर बताया गया है, वैश्विक सुलभ चर घोषित करने के लिए आप इसे सार्वजनिक कीवर्ड से पहले के कार्यों के बाहर कर सकते हैं।
और, के बाद से दिखावा प्रक्रियाओं के बाहर की अनुमति नहीं है, तो आप, उदाहरण के लिए, एक उप कहा जाता InitGlobals कि आपकी सार्वजनिक चर initializes बना सकते हैं, तो आप सिर्फ इस सबरूटीन अपने बयान की शुरुआत में फोन
यहाँ
Public Coordinates(3) as Double
Public Heat as double
Public Weight as double
Sub InitGlobals()
Coordinates(1)=10.5
Coordinates(2)=22.54
Coordinates(3)=-100.5
Heat=25.5
Weight=70
End Sub
Sub MyWorkSGoesHere()
Call InitGlobals
'Now you can do your work using your global variables initialized as you wanted them to be.
End Sub
यह है कि मैं क्या जब मैं प्रारंभ वैश्विक स्थिरांक की आवश्यकता है है: यह का एक उदाहरण है
1. एक मॉड्यूल कहा जाता Globals
2. इस तरह प्रॉपर्टी जोड़ेंमें जोड़ेंमॉड्यूल:
Property Get PSIStartRow() As Integer
PSIStartRow = Sheets("FOB Prices").Range("F1").Value
End Property
Property Get PSIStartCell() As String
PSIStartCell = "B" & PSIStartRow
End Property
यह वीबीए कहां चल रहा है? एक्सेल, एक्सेस, वर्ड ... –
@ डंकनहोवे मैं एक सामान्य वीबीए समाधान की उम्मीद कर रहा था। – David
क्या वैश्विक चर अब बुरा नहीं मानते हैं? मैं मई में कुछ हफ्तों के लिए दूर था, इसलिए मुझे कुछ याद आ गया होगा। –