Many VB programmers use the Option Explicit statement to make sure each variable has been explicitly declared before using it. This means you’ll always notice a misspelled variable, which if not caught might cause your application to behave erratically. However, when you use the ReDim statement (documented, albeit ambiguously), Option Explicit can’t save you. Consider this procedure:
Sub DisplayDaysInThisYear Dim iDaysInYear(365) ' Initially dimension array If ThisIsLeapYear() Then ' Is this year a leap year? ReDim iDaysInYr(366) ' Extra day this year! End If MsgBox "This year has " & _ UBound(iDaysInYear) & " days in it!"End Sub
This ReDim statement creates a new variable called iDaysInYr, even though you really wanted to reallocate the storage space of the iDaysInYear() array. So the message box displays the incorrect number of days in the year. You can’t prevent this from happening, other than being careful when coding the ReDim statement. However, if you use ReDim Preserve, Option Explicit makes sure the variable was previously declared.