मैं वीबीए में 2 डी सरणी में वैकल्पिक तत्व कैसे जोड़ सकता हूं? कार्य उदाहरण:
sub test
Dim arr As Variant, ix as variant
arr = Array( _
Array("01probe", 1, 2, True), _
Array("02datum", 3, 4) _
)
'... lots more
' true optional, nothing or just "false" as alternative
For Each ix In arr
Debug.Print ix(3) '<---- index out of range
Next ix
end sub
सबको शुक्रीया
2 जवाब
आपकी सरणी 2D प्रकार नहीं है। यह सरणी की एक सरणी है (एक जंजीर सरणी) ...
लेकिन मैं कल्पना नहीं कर सकता कि वैकल्पिक पैरामीटर क्यों आवश्यक होगा।
यदि आपकी सरणी As Variant
घोषित की गई है, तो यह किसी भी प्रकार के चर, वस्तुओं को शामिल कर सकती है। इसके आयामों को घोषित करना आवश्यक नहीं है, न ही। सब कुछ माना जा सकता है Optional
...
कृपया अगला कोड देखें:
Sub testOptionalArray()
Dim arr As Variant, dbInteger As Integer, strProbeNr As Long, rng As Range
Dim rng2 As Range, dbDate As Date, dDate As Date
dbInteger = 11: strProbeNr = 1000: dbDate = Date + 1: dDate = Now
Set rng = Range("A1:A2"): Set rng2 = Range("B1:B2")
arr = Array( _
Array("01probe", dbInteger, strProbeNr, rng), _
Array("02datum", dbDate, dDate, rng2))
Debug.Print arr(0)(1), arr(0)(3).cells(1, 1).value
Debug.Print arr(1)(1), arr(1)(UBound(arr(1))).cells.count, arr(1)(UBound(arr(1))).Address
End Sub
संपादित, आपके द्वारा एक त्रुटि लौटाते हुए अपना कोड पोस्ट करने के बाद:
चर्चा में कोड को अगले तरीके से समझना होगा। सबसे पहले, हमेशा सभी चरों को उचित रूप से घोषित करना एक अच्छी आदत होगी...
Sub testJaggedArray()
Dim arr As Variant, ix As Variant
arr = Array( _
Array("01probe", 1, 2, True), _
Array("02datum", 3, 4))
'The above array must be understood like an array of two arrays,
'first of them having 4 elements (ubound = 4, because it starts from 0)
' and a second one with only 3 elements.
For Each ix In arr
'When your code tries to print the fourth element of an array with only
'three elements, of course VBA return 'subscript out of range'.
Debug.Print ix(3) '<---- subscript out of range
Next ix
'You can return an element of an array inside a jagged array in this way:
Debug.Print arr(1)(ubound(arr(1)))' which means returning of the last element
' of the second array without returning an error
'You may use an array of two arrays having different number of element,
'but you cannot expect to an array to return an INEXISTENT item.
'There is no any connection between an hypothetical need of OPTIONAL element.
'It is only a matter of EXISTING element...
End Sub
FaneDuru की मदद से मुझे बिना किसी त्रुटि के विभिन्न आंतरिक सरणी आकारों के साथ एक सरणी को लूप करने का समाधान मिला:
sub test
Dim arr As Variant, i as integer
arr = Array( _
Array("01probe", 1, 2, True), _
Array("02datum", 3, 4) _
)
'... lots more
For i = LBound(arr) To UBound(arr)
Debug.Print (arr(i)(UBound(arr(i))))
Next i
end sub
संबंधित सवाल
नए सवाल
arrays
एक सरणी एक आदेशित रैखिक डेटा संरचना है जिसमें तत्वों (मूल्यों, चर, या संदर्भों) का एक संग्रह होता है, प्रत्येक को एक या अधिक अनुक्रमित द्वारा पहचाना जाता है। जब सरणियों के विशिष्ट प्रकारों के बारे में पूछा जाता है, तो इसके बजाय इन संबंधित टैगों का उपयोग करें: [वेक्टर], [सरणी सूची], [मैट्रिक्स]। इस टैग का उपयोग करते समय, एक सवाल जो प्रोग्रामिंग भाषा के लिए विशिष्ट होता है, उस प्रश्न को उस प्रोग्रामिंग भाषा के साथ टैग करें जिसका उपयोग किया जा रहा है।