ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   non-linear step count loop syntax? (https://www.excelbanter.com/excel-programming/408988-non-linear-step-count-loop-syntax.html)

Ker_01

non-linear step count loop syntax?
 
I have an existing workbook that requires modification. The workbook has
arrays that were built for earlier needs, and all of that data needs to be
retained (e.g. I can't change the arrays or their contents). However, I have
some code that used to loop through all elements of some arrays, and now I
need to be more selective.

Simplified example- my old code was

For x=3 to 10
'do stuff
Next

and now I need it to be
For X=3,5,7-10
'do stuff
Next

I've worked with linear loops and 1 step values, but I'm not sure how to
approach this type of non-linear loop- and I can't recall seeing any
examples anywhere that deal with this type of situation. What is the proper
syntax to use for the non-linear loop count? Or do I need to build a
separate array of my values (3,5,7,8,9,10 in this example) and reference it
as

MyArray= Array(3,5,7,8,9,10)
For Y = 1 to 6
X=MyArray(Y)
'do stuff
Next

Thanks,
Keith



Maury Markowitz[_2_]

non-linear step count loop syntax?
 
On Apr 8, 10:22*am, "Ker_01" wrote:
and now I need it to be
For X=3,5,7-10
*'do stuff
Next


Welcome to IF/GOTO hell. VB's control structures are not exactly it's
strong suit.

Maury

Rick Rothstein \(MVP - VB\)[_1655_]

non-linear step count loop syntax?
 
You could do it this way...

Dim X As Variant
For Each X In Array(3, 5, 7, 8, 9, 10)
' do stuff
Next

The value of X at each loop will be 3, 5, 7, 8, 9, 10 in order.

Rick


"Ker_01" wrote in message
...
I have an existing workbook that requires modification. The workbook has
arrays that were built for earlier needs, and all of that data needs to be
retained (e.g. I can't change the arrays or their contents). However, I
have some code that used to loop through all elements of some arrays, and
now I need to be more selective.

Simplified example- my old code was

For x=3 to 10
'do stuff
Next

and now I need it to be
For X=3,5,7-10
'do stuff
Next

I've worked with linear loops and 1 step values, but I'm not sure how to
approach this type of non-linear loop- and I can't recall seeing any
examples anywhere that deal with this type of situation. What is the
proper syntax to use for the non-linear loop count? Or do I need to build
a separate array of my values (3,5,7,8,9,10 in this example) and reference
it as

MyArray= Array(3,5,7,8,9,10)
For Y = 1 to 6
X=MyArray(Y)
'do stuff
Next

Thanks,
Keith



Ker_01

non-linear step count loop syntax?
 
Thanks Rick!
That is one step better than my separate array of values, and more eloquent.
Best regards,
Keith

"Rick Rothstein (MVP - VB)" wrote in
message ...
You could do it this way...

Dim X As Variant
For Each X In Array(3, 5, 7, 8, 9, 10)
' do stuff
Next

The value of X at each loop will be 3, 5, 7, 8, 9, 10 in order.

Rick


"Ker_01" wrote in message
...
I have an existing workbook that requires modification. The workbook has
arrays that were built for earlier needs, and all of that data needs to be
retained (e.g. I can't change the arrays or their contents). However, I
have some code that used to loop through all elements of some arrays, and
now I need to be more selective.

Simplified example- my old code was

For x=3 to 10
'do stuff
Next

and now I need it to be
For X=3,5,7-10
'do stuff
Next

I've worked with linear loops and 1 step values, but I'm not sure how to
approach this type of non-linear loop- and I can't recall seeing any
examples anywhere that deal with this type of situation. What is the
proper syntax to use for the non-linear loop count? Or do I need to
build a separate array of my values (3,5,7,8,9,10 in this example) and
reference it as

MyArray= Array(3,5,7,8,9,10)
For Y = 1 to 6
X=MyArray(Y)
'do stuff
Next

Thanks,
Keith






All times are GMT +1. The time now is 05:11 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com