First, PM a mod and have this thread moved to the .NET forum since this is the "classic vb verision 4/5/6 and not versions for versions2002/2003/2005/2008/2010.
Then, there are several ways in which to solve this. A single do while result <> "" or eight of those (one for each floor) or even a recursive call to the proceedure that collects this information.
Good Luck
vb5prgrmr
Posting Virtuoso
1,912 posts since Mar 2009
Reputation Points: 156
Solved Threads: 296
Heres an example of nested loops that acheives what you are trying to do:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim TotalFilledRooms As Integer = 0
Dim perc As Double
For i As Integer = 1 To 8
Dim response As Boolean = False
Dim filledRooms As Integer
While (Not response) Or (filledRooms < 0 Or filledRooms > 30)
response = Integer.TryParse(InputBox("How many rooms on floor " & i.ToString() & " are occupied?", "Enter number of occupied rooms"), filledRooms)
End While
perc = Math.Round((filledRooms / 30) * 100, 1)
TotalFilledRooms += filledRooms
Dim floor As String = "Floor " & i.ToString() & ": " & filledRooms.ToString() & "/30 " & perc.ToString() & "%"
lstFloors.Items.Add(floor)
Next
perc = Math.Round((TotalFilledRooms / 240) * 100, 1)
lblOccRooms.Text = TotalFilledRooms.ToString() & "/240"
lblOccPerc.Text = perc.ToString() & "%"
End Sub
The for loop ensures that 8 values are requested.
Theres some basic validation in the while loop, if the returned value cannot be parsed as an integer or the integer returned is outside the range 0-30 then the input window will reappear until a valid value is entered.
Ryshad
Nearly a Posting Virtuoso
1,307 posts since Aug 2009
Reputation Points: 512
Solved Threads: 246