Nested Do While Loops

G

Gum

I have been trying to get a nested Do While Loop and I need to find out where
I went wrong. The snippet of the procedure is as follows:

Sub control()
Dim Target1 As Integer
Dim Target2 As Integer
Dim TTarget As Integer
Dim Net As Integer
Dim ExNet As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer


BTarget = Sheets("Sheet1").Range("H3")
STarget = Sheets("Sheet1").Range("H4")
ExNet = Sheets("Sheet1").Range("N3")
TTarget = Target1 + Target2
While TTarget <> 0 And i < 100
If TTarget > ExNet Then
Net = TTarget - ExNet
While Net > 0 And j < 100
Sheets("Sheet1").Range("G3") = 1
Sheets("Sheet1").Range("G4") = 0
j = j + 1
Wend
Else:
If ExNet > TTarget Then
Net = Exnet - TTarget
While Net > 0 And k < 100
Sheets("Sheet1").Range("G3") = 0
Sheets("Sheet1").Range("G4") = 1
k = k + 1
Wend
End If
i = i + 1
Wend
End If
End Sub

I placed the i,j, and k just to control the maximum times the loop occurs so
that it would not be indefinite.
I am getting errors with the 'Wend without While' compile error when the
above procedure is run.
 
B

Bob Phillips

Just fixing the syntax

Sub control()
Dim Target1 As Integer
Dim Target2 As Integer
Dim TTarget As Integer
Dim Net As Integer
Dim ExNet As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer


BTarget = Sheets("Sheet1").Range("H3")
STarget = Sheets("Sheet1").Range("H4")
ExNet = Sheets("Sheet1").Range("N3")
TTarget = Target1 + Target2
While TTarget <> 0 And i < 100

If TTarget > ExNet Then

Net = TTarget - ExNet
While Net > 0 And j < 100

Sheets("Sheet1").Range("G3") = 1
Sheets("Sheet1").Range("G4") = 0
j = j + 1
Wend
Else
If ExNet > TTarget Then

Net = ExNet - TTarget
While Net > 0 And k < 100

Sheets("Sheet1").Range("G3") = 0
Sheets("Sheet1").Range("G4") = 1
k = k + 1
Wend
End If

i = i + 1
End If
Wend
End Sub
 
S

Susan

i think your last "End If" should come before your last "Wend".
i added more spaces to your coding to indent it in a more exaggerated
manner & that's what i come up with.
:)
susan


I have been trying to get a nested Do While Loop and I need to find out where
I went wrong.  The snippet of the procedure is as follows:

Sub control()
Dim Target1 As Integer
Dim Target2 As Integer
Dim TTarget As Integer
Dim Net As Integer
Dim ExNet As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer

BTarget = Sheets("Sheet1").Range("H3")
STarget = Sheets("Sheet1").Range("H4")
ExNet = Sheets("Sheet1").Range("N3")
TTarget = Target1 + Target2
While TTarget <> 0 And i < 100
    If TTarget > ExNet Then
    Net = TTarget - ExNet
    While Net > 0 And j < 100
        Sheets("Sheet1").Range("G3") = 1
        Sheets("Sheet1").Range("G4") = 0
        j = j + 1
    Wend
    Else:
    If ExNet > TTarget Then
    Net = Exnet - TTarget
    While Net > 0 And k < 100
        Sheets("Sheet1").Range("G3") = 0
        Sheets("Sheet1").Range("G4") = 1
        k = k + 1
    Wend
    End If
i = i + 1
Wend
End If
End Sub
 
D

Dave Peterson

If you indent your code, it makes it easier to line up your while/wend and
if/else/end if's.



While TTarget <> 0 And i < 100
If TTarget > ExNet Then
Net = TTarget - ExNet
While Net > 0 And j < 100
Sheets("Sheet1").Range("G3") = 1
Sheets("Sheet1").Range("G4") = 0
j = j + 1
Wend
Else
If ExNet > TTarget Then
Net = Exnet - TTarget
While Net > 0 And k < 100
Sheets("Sheet1").Range("G3") = 0
Sheets("Sheet1").Range("G4") = 1
k = k + 1
Wend
End If
end if '<-- added
i = i + 1
Wend
 

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