Late to the game (babysitting grandkids) but since arrays can start and end with any value, e.g. Array1(3 to 12), Array2(-2 to 0), etc., I don't like to make assumptions regardiong bounds
Sub test2()
Dim a(-2 To 0)
a(-2) = 1
a(-1) = 2
a(0) = 100
End Sub
I often do this if I have to map to (say) columns N:Z. Too me it just makes it more readable
Sub test3()
Dim A(14 To 26) As Variant
Dim i As Long
For i = LBound(A) To UBound(A)
Debug.Print Columns(i).Address
Next i
End Sub
So my shot was to try and make the Merge wotk without and bounds assumptions. Sometimes I have way TOO much time on my hands
Option Explicit
Sub test()
Dim ary1 As Variant, ary2 As Variant, aryOut As Variant
Dim i As Long
ary1 = Array(100, 300, 500, 700, 900, 1100)
ary2 = Array(1, 2, 3, 4)
aryOut = Merge(ary1, ary2)
For i = LBound(aryOut) To UBound(aryOut)
Debug.Print i, aryOut(i)
Next i
End Sub
Function Merge(A1 As Variant, A2 As Variant) As Variant
Dim n1 As Long, n2 As Long, i As Long, o As Long, m As Long
Dim i1 As Long, i2 As Long
Dim A() As Variant
n1 = UBound(A1) - LBound(A1) + 1
n2 = UBound(A2) - LBound(A2) + 1
ReDim A(1 To n1 + n2)
m = Application.Min(n1, n2)
o = 1
i1 = LBound(A1)
i2 = LBound(A2)
For i = 1 To m
A(o) = A1(i1)
i1 = i1 + 1
A(o + 1) = A2(i2)
i2 = i2 + 1
o = o + 2
Next i
If n1 > n2 Then
For i = i1 + 1 To n1
A(o) = A1(i1)
i1 = i1 + 1
o = o + 1
Next i
Else
For i = i2 + 1 To n2
A(o) = A2(i2)
i2 = i2 + 1
o = o + 1
Next i
End If
Merge = A
End Function