View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Gary Keramidas Gary Keramidas is offline
external usenet poster
 
Posts: 2,494
Default Test an array to see if it is populated without an error

not sure if this will help or not. if you run this with and without the
commented line you will see the difference. what you can do, is add a watch for
arr and step through the code and see how arr is changed as you step through the
code.
someone else may have some other ideas.

Option Base 1
Sub test()
Dim arr As Variant
' arr = Array("2007", "2008")
If IsEmpty(arr) Then
MsgBox "array empty"
Else
MsgBox UBound(arr) & " elements"
End If
End Sub

--


Gary


"Rich J" wrote in message
...
I have a routine that calculates an assigned number based on the date that is
entered. I have recently changed the code so that it now calculates the
number without me having to give a starting number for each year. This means
that the code loops starting from 2007 to calculate the beginning number for
each year after. I created an array to store as many years after 2007 as the
years increase. It is a one dimensional array.
My question: Is there a simple way to tell whether the array has been filled
or if it is empty on the first time through the routine without getting an
error?

Y would be the year of the date needed. I did not include all of the code.
I created the Iserror routine to try to determine this but I think there must
be a better way.
Once the array has been filled and the program running it will save a lot of
time not to have to recalculate each year again.

Function WDXFind(Y)
YY = 2007 ' starting year
WDX = 1 ' 1/8/2007 starting point for calculating assigned number
for 2007
N = 1 <- dimension
i = 0 <- index

WDXTF = False
On Error Resume Next
If IsError(UBound(WDXHold)) Then
WDXTF = True
End If

If WDXTF Or UBound(WDXHold) < Y - YY Then <- The resume Next lets the
program continue on the first run through. The UBound(WDXHold) gives
"Superscript of Range" error message.

Do Until YY = Y
.
.
ReDim Preserve WDXHold(N)
WDXHold(i) = WDX
N = N + 1 <- dimension starting at 1
i = i + 1 <- index starting at 0
YY = YY + 1 <- increases the year to calculate next
Loop
WDXFind = WDX
Else
WDXFind = WDXHold(Y - 2008)

End If
End Function