ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Looping : For... Next problem (https://www.excelbanter.com/excel-programming/398731-looping-next-problem.html)

LuisE

Looping : For... Next problem
 
I modified the following code to loop thru rows 2 to 5.
The strInitial wont reset to take the value of the next row, Itll remain
showing the value of the first row for as many times there are in N, all the
other variables reset to the next N.
Any suggestions?

For N = 2 To 5 'rows
For i = 0 To UBound(myArray)

If myArray(i) 0 Then

'Concatenate array values with column values to create a range for the
replacement string
strToReplace = "[" & myArray(i) & "]" 'Create string to be replaced from
array value
strRange = myArray(i) & N 'column and row
strReplacement = Range(strRange) 'Create the replacement string
'Replace existing string with replacment string
strInitial = Replace(strInitial, strToReplace, strReplacement, 1, 1) 'not
looping thru row
Else
i = UBound(myArray)
End If
Next i
MsgBox strInitial 'MsgBox displays the new string
Next N






Rick Rothstein \(MVP - VB\)

Looping : For... Next problem
 
It looks like your code starts off with strInitial having some initial
value; however you are changing the value inside the loop, so the next time
through the loop, it has the last value it was changed to. I would suggest
you create a new variable to do the modifications to, and reassign the
initial value on each loop. Here is what I am thinking.

For N = 2 To 5
CopyOfInitial = strInitial
For i = 0 To UBound(myArray)
If myArray(i) 0 Then
strToReplace = "[" & myArray(i) & "]"
strRange = myArray(i) & N
strReplacement = Range(strRange)
CopyOfInitial = Replace(CopyOfInitial, strToReplace, strReplacement,
1, 1)
Else
i = UBound(myArray)
End If
Next i
MsgBox CopyOfInitial
Next N

Here I created a variable named CopyOfInitial to modify within the inner
loop and which I reset at the beginning of the outer loop. That way, the
contents of strInitial are never destroyed and can be recalled at anytime.

Rick



"LuisE" wrote in message
...
I modified the following code to loop thru rows 2 to 5.
The strInitial wont reset to take the value of the next row, Itll remain
showing the value of the first row for as many times there are in N, all
the
other variables reset to the next N.
Any suggestions?

For N = 2 To 5 'rows
For i = 0 To UBound(myArray)

If myArray(i) 0 Then

'Concatenate array values with column values to create a range for the
replacement string
strToReplace = "[" & myArray(i) & "]" 'Create string to be replaced from
array value
strRange = myArray(i) & N 'column and row
strReplacement = Range(strRange) 'Create the replacement string
'Replace existing string with replacment string
strInitial = Replace(strInitial, strToReplace, strReplacement, 1, 1) 'not
looping thru row
Else
i = UBound(myArray)
End If
Next i
MsgBox strInitial 'MsgBox displays the new string
Next N








All times are GMT +1. The time now is 01:02 PM.

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