Your code could use some real clean-up.
Dim i As Long
With Sheets("Analysis")
Do Until .Range("L1").Value < 50
For i = 3 To 93
.Range("B" & i).Copy .Range("R3")
.Range("Q3").Copy
.Range("G" & i).PasteSpecial Paste:=xlPasteValues
Next i
Loop
End With
A couple of things. First, make sure that there's a mechanism somewhere that reduces the value in .Range("L1")
to less than 50
. Otherwise, this runs in an infinite loop (because you can't complete the condition to make it stop).
Second, make sure that your For
loops are closed with Next
. Either Next
or Next x
where x
is the iterator variable you defined should work (in your case, x
is i
).
Third, read up on the differences of Do While-Loop
, Do Until-Loop
, Do-Loop While
, and Do-Loop Until
. Until
and While
are pretty self-explanatory. The placement of the condition is a bit of a difficulty for those beginning with loops and should be mastered without question. One really clear explanation can be found here.
Fourth, use With
for sequential or simultaneous actions on a single object. Check this answer out for samples and explanations (check section (3)).
Hope this helps.