use different string variables in FOR loop

J

John Keith

I would like to create a FOR loop that uses many different string
values as the loop variable, maybe 20-30 different values.

What kind of structure is required to loop through a list of string
varibles like this:

red
green
blue
orange
and so on....

Thanks


John Keith
(e-mail address removed)
 
R

Rick Rothstein

More details about what you plan to do with the items as you loop through
them would be helpful. If, for example, you are just trying to see if one
the loop-items is equal to some other variable's content, you may not need
to use a loop at all. As with all programming, the code approach you would
use to solve the problem depends on what the problem you are trying to solve
is... if you don't tells us what that is, we could guess forever and never
get it right.
 
I

its.a.scign

A For loop can only use a number for the count. However you can set up
an array with the strings in it, then use the loop variable to count
through the elements of the array.

<Code>

Dim words(4) As String
words(0) = "red"
words(1) = "green"
words(2) = "blue"
words(3) = "orange"

' This will print each of those words in order
For i = 0 To UBound(words) - 1
Debug.Print words(i)
Next

</Code>

As long as you can get the words you want to cycle through into an
array, you can count through them in a loop this way.

Does that help?
 
R

Rick Rothstein

A For loop can only use a number for the count.

That is not entirely true... you can use a For Each loop to iterate a
collection or an array without referring to any numerical values. For
example, here is a rewrite of your code to demonstrate this...

<Code>
Dim Word As Variant
For Each Word In Array("Red", "Green", "Blue", "Orange")
Debug.Print Word
Next
</Code>

--
Rick (MVP - Excel)


A For loop can only use a number for the count. However you can set up
an array with the strings in it, then use the loop variable to count
through the elements of the array.

<Code>

Dim words(4) As String
words(0) = "red"
words(1) = "green"
words(2) = "blue"
words(3) = "orange"

' This will print each of those words in order
For i = 0 To UBound(words) - 1
Debug.Print words(i)
Next

</Code>

As long as you can get the words you want to cycle through into an
array, you can count through them in a loop this way.

Does that help?
 
J

John Keith

As always, post your efforts for comments

Sure, for you and Rick I'll provide a little more detail for the
discussion although the solution posted by (e-mail address removed)
is just what I was looking for.

I had a lot of inline repetitive code that contained the following:

Sheets.Add Type:=xlWorksheet
ActiveSheet.Name = "Red"

This code and many other steps were identical and could clearly be
condensed inside a loop, I just didn't know how to structure the loop
with string names that changed.

Thanks for the help!




John Keith
(e-mail address removed)
 
J

John Keith

That is not entirely true... you can use a For Each loop to iterate a
collection or an array without referring to any numerical values. For
example, here is a rewrite of your code to demonstrate this...

<Code>
Dim Word As Variant
For Each Word In Array("Red", "Green", "Blue", "Orange")
Debug.Print Word
Next
</Code>

This solution is interesting to me as well and may get used in the
future, but the other solution posted gives me a better opportunity to
put a comment after each string value so I can better document what is
being done.

Thanks for the idea.



John Keith
(e-mail address removed)
 

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