Nested Do While Loops

  • Thread starter Thread starter Gum
  • Start date Start date
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.
 
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
 
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
 
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

Back
Top