Variable Name Changes in Loop Operation

L

LiCal

I am testing two variables of similarly named and sequentially
numbered through a do..loop.

I know that I can do that via var() array.

but if I want to change the variable name via string changes, how to
do it?

........
day_1 = date
day_2 = dateadd("d", 7, day_1)

nn=1

do
msgbox "day_" & nn ' not working this way,
nn= nn+1
loop until nn>=3

.............

........
 
G

GS

I am testing two variables of similarly named and sequentially
numbered through a do..loop.

I know that I can do that via var() array.

but if I want to change the variable name via string changes, how to
do it?

.......
day_1 = date
day_2 = dateadd("d", 7, day_1)

nn=1

do
msgbox "day_" & nn ' not working this way,
nn= nn+1
loop until nn>=3

............

........

You could use a For...Next loop and use the counter like so...

Dim i As Integer
For i = 1 To 3
MsgBox "Day_" & CStr(i)
Next 'i
 
L

LiCal

You could use a For...Next loop and use the counter like so...

  Dim i As Integer
  For i = 1 To 3
    MsgBox "Day_" & CStr(i)
  Next 'i


I was trying to get the msgbox to show the Date not "Day_1" etc.
 
G

GS

LiCal used his keyboard to write :
I was trying to get the msgbox to show the Date not "Day_1" etc.

Ok, put the dates in an array and loop the array...

Dim sDates, vaDates, i As Integer
For i = 0 To 14 Step 7
sDates = sDates & "|" & Date + i
Next 'i
sDates = Mid$(sDates, 2)
vaDates = Split(sDates, "|")
For i = LBound(vaDates) To UBound(vaDates)
Debug.Print vaDates(i)
Next 'i
 
G

GS

You can fine tune that as follows...
Dim sDates, vaDates, i As Integer
For i = 0 To 14 Step 7: sDates = sDates & "|" & Date + i: Next 'i
vaDates = Split(Mid$(sDates, 2), "|")
For i = LBound(vaDates) To UBound(vaDates)
Debug.Print vaDates(i)
Next 'i

BTW, you can change any part of a defined variable after it's been
defined.
 
G

GS

Alternative approach...

Put dates directly into an array, resizing the array as you go.

Sub GetDates()
Dim vaDates(), i As Integer, j As Integer
For i = 0 To 14 Step 7
ReDim Preserve vaDates(j)
vaDates(j) = Date + i: j = j + 1
Next 'i
For i = LBound(vaDates) To UBound(vaDates)
Debug.Print vaDates(i)
Next 'i
End Sub
 
D

Dave Peterson

VBA doesn't allow you to create variable names this way. But you don't have to,
either. You can use Arithmetic.

Maybe...

Maybe:
msgbox "day_" & date + nn
or
msgbox "day_" & date + (nn * 7)

or with formatting:

msgbox "day_" & format(date + nn, "dd-mmm-yyyy")
or
msgbox "day_" & format(date + (nn * 7), "dd-mmm-yyyy")
 

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