2010-07-15 12 views
117

मैं VBA के लिए नया हूँ और जानना चाहते हैं कि मैं एक लाइन में निम्नलिखित घोषणा और काम में बदल सकते हैं हैं:क्या मैं वीबीए में एक चर को घोषित और असाइन कर सकता हूं?

Dim clientToTest As String 
clientToTest = clientsToTest(i) 

या

Dim clientString As Variant 
clientString = Split(clientToTest) 

उत्तर

165

दुर्भाग्य से, निकटतम आप मिल जाएगा एक विशुद्ध दृश्य : निरंतरता चरित्र यदि आप इसे पठनीयता के लिए एक पंक्ति में चाहते का उपयोग कर बात यह है VBA में कोई आशुलिपि नहीं है;

Dim clientToTest As String: clientToTest = clientsToTest(i) 
Dim clientString As Variant: clientString = Split(clientToTest) 
+9

+1, मुझे लगता है कि माइक्रोसॉफ्ट ने .NET को बिल्डअप के दौरान सुझाव दिया है कि वीबी 6 डेवलपर्स इसे VB.NET के लिए तैयार होने के लिए ऐसा करना शुरू कर देते हैं। –

13

आप सॉर्ट-की कर वस्तुओं के साथ कि कर सकते हैं, जैसा कि निम्नलिखित में है।

Dim w As New Widget 

लेकिन तार या भिन्न रूपों के साथ नहीं।

+0

यह बिल्कुल सही नहीं है। अर्द्ध-कोलो ': 'के साथ" कार्रवाई "को अलग करके, आप किसी भी डेटा-प्रकार (मान या वस्तु) के साथ एक ही पंक्ति पर एक चर को घोषित और प्रारंभ कर सकते हैं। कुछ सीमाएं हैं क्योंकि आपके पास एक ही पंक्ति पर एकाधिक मूल्य घोषणाएं नहीं हो सकती हैं (यानी 'var1 = val1: var2 = val2')। यह बहुत ही खराब हो जाएगा और आपको इस प्रकार के असाइनमेंट को कभी-कभी करने की इजाजत देता है लेकिन पूरी तरह से इस नोटेशन द्वारा सुझाए गए अनुसार नहीं। – GoldBishop

+1

@GoldBishop, हां, एक ही पंक्ति में कई कथनों को गठबंधन करने के लिए कोलन का उपयोग आम तौर पर काम करता है (जैसा कि एलेक्स के ने कहा था)। मैं जो कह रहा हूं वह स्ट्रिंग्स या वेरिएंट (या शायद अन्य प्राइमेटिव्स के साथ) के साथ काम नहीं करेगा, 'डिम एक्स ए न्यू टी' सिंटैक्स है, जो केवल ऑब्जेक्ट्स के साथ काम करता है। –

+0

हाँ कन्स्ट्रक्टर प्रारंभिक लाइन पर काम नहीं करेगा लेकिन यह वेरिएंट और स्ट्रिंग असाइनमेंट के साथ काम करेगा। मैं इसे मूल्य प्रकार और कुछ ऑब्जेक्ट प्रकारों के लिए हर समय उपयोग करता हूं। 'dim str स्ट्रिंग के रूप में: str =" value "' और 'dim str वर्कशीट के रूप में: सेट str = ActiveWorkbook.worksheets (" शीट 1 ") 'दोनों बार बार काम करते हैं। हालांकि, अगर मैं ऑब्जेक्ट इंस्टेंटेशन 'dim ws को नई वर्कशीट के रूप में करता हूं: सेट ws = ActiveWorkbook.Worksheets ("शीट 1")' वीबीए में किसी भी अन्य अमान्य ऑपरेशन की तरह त्रुटि होगी। – GoldBishop

2

वास्तव में, आप ऐसा कर सकते हैं, लेकिन ऐसा नहीं।

Sub MySub(Optional Byval Counter as Long=1 , Optional Byval Events as Boolean= True) 

'code... 

End Sub 

और उप-कॉल करते समय आप चर को अलग-अलग सेट कर सकते हैं, या उन्हें अपने डिफ़ॉल्ट मानों पर जाने दें।

+1

यह तर्कों के लिए है, स्थानीय चर नहीं। –

संबंधित मुद्दे

 संबंधित मुद्दे