Regarding Option Base 1, is was not the case in my example but thanks for reminding the importance of it.
I don't use it myself, but sometimes I'll inherit a macro where it is used. I always use LBound(…) even if I 'know' it's Base 0
As a second reminder, the (0 To N) is not written is stone
Sometimes I need to (say) move rows 20 to 29 into an array
Dim Ary (20 To 29) can simplify the macro and make it easier to read
For I = LBound(Ary) to UBound(Ary)
Ary(I) = Cells(I, 1).value
Next I
No, that's called experience .. just keep on VBA-ing