Basically Do...Loop statement consist 2 types:
- While Condition
Either Check First or Check Last - Until Condition
Either Check First or Check Last
Before proceed we must understand basic operator as below:
Basic Operator | ||
1 | < | Less than |
2 | <= | Less than or equal to |
3 | > | Greater than |
4 | >= | Greater than or equal to |
5 | = | Equal to |
6 | <> | Not equal to |
7 | "" | Empty |
Base on table below we are going to use Do..Loop statement to get total monthly sales.
In case we use Range("A3") to Range("A14"). For Do...Loop While Check whether Not Equal to empty (<> "") but for Do...Loop Until Check whether Equal to empty (=""). Under certain circumstances the result may be different can cause bug in your code. Please be careful.
VBA Code:
1) While Condition Check first.
Sub DoWhile_CheckFirst()
Dim i As Integer
i = 3
With ActiveSheet
Do While .Range("A" & i) <> ""
.Range("D" & i) = .Range("B" & i) + .Range("C" & i)
i = i + 1
Loop
End With
End Sub
2) While Condition Check last.
Sub DoWhile_CheckLast()
Dim i As Integer
i = 3
With ActiveSheet
Do
.Range("D" & i) = .Range("B" & i) + .Range("C" & i)
i = i + 1
Loop While .Range("A" & i) <> ""
End With
End Sub
3) Until Condition Check first.
Sub DoUntil_CheckFirst()
Dim i As Integer
i = 3
With ActiveSheet
Do Until .Range("A" & i) = ""
.Range("D" & i) = .Range("B" & i) + .Range("C" & i)
i = i + 1
Loop
End With
End Sub
4) While Condition Check last.
Sub DoUntil_CheckLast()
Dim i As Integer
i = 3
With ActiveSheet
Do
.Range("D" & i) = .Range("B" & i) + .Range("C" & i)
i = i + 1
Loop Until .Range("A" & i) = ""
End With
End Sub
Note:
Do Loop without counter will create infinite loop and your computer will hang. The counter for above example is i = i + 1.
Microsoft Reference - Do..Loop statement
Microsoft Reference - Using Do..Loop statement
Practice makes perfect. Thank You.
No comments:
Post a Comment