Initializing static variables in VBA

A

Adrian

Hi,

I am writing a static procedure as follows:

Sub Test

call Counter
call Counter
call Counter

End


Sub Counter()

Static counter as Integer

counter = counter + 1

Debug.print x

End Sub

I want to print a series of numbers 12,13,14, from the
test procedure instead of 1,2,3 . How do i go about doing it ?
In other words, how do i initialize a static variable in a Sub procedure ?

Thanks.
 
D

Dustin

Why not check to see if the variable is empty or a value
that you desire, for example:

Sub Counter()

Static counter as Integer

'Assign a value to counter if empty or less than 11.
If counter = "" or counter < 11 Then
counter = 11
End If

counter = counter + 1

'counter now equals 12

Debug.print x

End Sub
 
T

Tom Ogilvy

Sub Test()

Call counter(12)
Call counter
Call counter

End Sub


Sub counter(Optional InitSet As Variant)

Static counter As Integer
If Not IsMissing(InitSet) Then
counter = InitSet - 1
End If
counter = counter + 1

Debug.Print counter

End Sub
 
B

Bob Kilmer

You cannot initialize a static variable in VB per se, but ...

Sub Counter()
Static counter as Integer

If counter < 12 Then
counter = 12
Else
counter = counter + 1
End If

Debug.print x
End Sub

BTW, a Long has a larger range than an Integer, if it matters.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top