नहीं एक जवाब लेकिन सरणी पर एक अध्ययन को संबोधित है।
इस कोड: ReDim बचाना Matriz (1) Matriz (1) = 5
दो तत्वों के साथ एक सरणी बनाता है: 0 और 1 UBound() देता है 1
यहाँ कुछ कोड है कि मदद मिल सकती है इस मुद्दे का पता लगाने:
Option Explicit
Sub Macro1()
Dim matriz() As Variant
Dim x As Variant
Dim i As Integer
matriz = Array(0)
ReDim Preserve matriz(1)
matriz(1) = 5
ReDim Preserve matriz(2)
matriz(2) = 10
ReDim Preserve matriz(3)
matriz(3) = 4
Debug.Print "Initial For Each"
For Each x In matriz
Debug.Print ":" & x
Next x
Debug.Print "Initial For i = 0"
For i = 0 To UBound(matriz)
Debug.Print ":" & matriz(i)
Next i
Debug.Print "Initial For i = 1"
For i = 1 To UBound(matriz)
Debug.Print ":" & matriz(i)
Next i
Debug.Print "remove one"
For i = 1 To UBound(matriz)
matriz(i - 1) = matriz(i)
Next i
ReDim Preserve matriz(UBound(matriz) - 1)
For Each x In matriz
Debug.Print ":" & x
Next x
Debug.Print "remove one more"
For i = 1 To UBound(matriz)
matriz(i - 1) = matriz(i)
Next i
ReDim Preserve matriz(UBound(matriz) - 1)
For Each x In matriz
Debug.Print ":" & x
Next x
End Sub
आउट:
Initial For Each
:0
:5
:10
:4
Initial For i = 0
:0
:5
:10
:4
Initial For i = 1
:5
:10
:4
remove one
:5
:10
:4
remove one more
:10
:4
हालांकि यह एक अच्छा जवाब है और मैं इसे इस तरह से ऊपर उठा रहा हूं, आप शायद टिप्पणी कर सकते हैं कि यदि लक्ष्य कतार की तरह कुछ है तो यह इसे लागू करने के लिए एक डरावना अक्षम तरीका होगा। कोड जो इस तरह की चीजों का भारी उपयोग करता है उसे शायद संशोधित किया जाना चाहिए ताकि इसकी आवश्यकता न हो। –
ध्यान दें कि 0 वां तत्व है इसलिए 'प्रत्येक के लिए' हमेशा पहले (0 वें) तत्व के लिए कुछ रिपोर्ट करेगा। – rheitzman
'हम'? शायद ओपी पर टिप्पणी होनी चाहिए। – rheitzman