मैं VBA में नया हूं और जानना चाहता हूं कि क्या मैं निम्नलिखित घोषणा और असाइनमेंट को एक लाइन में बदल सकता हूं:
Dim clientToTest As String
clientToTest = clientsToTest(i)
या
Dim clientString As Variant
clientString = Split(clientToTest)
मैं VBA में नया हूं और जानना चाहता हूं कि क्या मैं निम्नलिखित घोषणा और असाइनमेंट को एक लाइन में बदल सकता हूं:
Dim clientToTest As String
clientToTest = clientsToTest(i)
या
Dim clientString As Variant
clientString = Split(clientToTest)
जवाबों:
दुर्भाग्य से वीबीए में कोई कमी नहीं है, निकटतम आप प्राप्त करेंगे एक शुद्ध दृश्य चीज है :
निरंतरता चरित्र का उपयोग करें यदि आप इसे पठनीयता के लिए एक पंक्ति पर चाहते हैं;
Dim clientToTest As String: clientToTest = clientsToTest(i)
Dim clientString As Variant: clientString = Split(clientToTest)
संकेत (अन्य उत्तरों / टिप्पणियों का सारांश): वस्तुओं के साथ भी काम करता है (Excel 2010):
Dim ws As Worksheet: Set ws = ActiveWorkbook.Worksheets("Sheet1")
Dim ws2 As New Worksheet: ws2.Name = "test"
आप निम्नलिखित के रूप में वस्तुओं के साथ ऐसा कर सकते हैं।
Dim w As New Widget
लेकिन स्ट्रिंग्स या वेरिएंट के साथ नहीं।
:
। कुछ सीमाएँ हैं क्योंकि आप एक ही लाइन (यानी var1 = val1: var2 = val2
) पर कई मूल्य घोषणाएँ नहीं कर सकते हैं । यह छिटपुट रूप से बग को हटा देगा और आपको इस प्रकार के असाइनमेंट को कभी-कभी करने की अनुमति देगा, लेकिन इस संकेतन द्वारा पूरी तरह से सुझाव नहीं दिया जाएगा।
Dim x As New T
सिंटैक्स है, जो केवल वस्तुओं के साथ काम करता है।
dim str as String: str = "value"
और dim str as Worksheet: set str = ActiveWorkbook.worksheets("Sheet1")
दोनों बार-बार काम करते हैं। हालांकि, अगर मैं एक वस्तु तात्कालिकता dim ws as New Worksheet: set ws = ActiveWorkbook.Worksheets("Sheet1")
VBA में किसी भी अन्य अवैध संचालन की तरह त्रुटि होगा।
New
कीवर्ड नहीं करता है। बस इतना ही कह रहा हूं।
वास्तव में, आप कर सकते हैं, लेकिन इस तरह से नहीं।
Sub MySub( Optional Byval Counter as Long=1 , Optional Byval Events as Boolean= True)
'code...
End Sub
और आप सबवे को कॉल करते समय चर अलग से सेट कर सकते हैं, या उन्हें उनके डिफ़ॉल्ट मानों पर दे सकते हैं।
कुछ मामलों में एक वेरिएबल घोषित करने की पूरी आवश्यकता को With
स्टेटमेंट का उपयोग करके टाला जा सकता है ।
उदाहरण के लिए,
Dim fd As Office.FileDialog
Set fd = Application.FileDialog(msoFileDialogSaveAs)
If fd.Show Then
'use fd.SelectedItems(1)
End If
इसे फिर से लिखा जा सकता है
With Application.FileDialog(msoFileDialogSaveAs)
If .Show Then
'use .SelectedItems(1)
End If
End With
आप एक पंक्ति में नीचे दिखाए अनुसार मान और असाइन कर सकते हैं। मैंने सिंगल लाइन में घोषित और असाइन किए गए दो वेरिएबल्स का उदाहरण दिया है। यदि एकाधिक प्रकार के डेटा प्रकार समान हैं
Dim recordStart, recordEnd As Integer: recordStart = 935: recordEnd = 946