PDA

View Full Version : Using a case statement



Sudsy
04-21-2010, 03:11 PM
Hi,

I am using the below code to calculate the power output of a wind turbine.

the case statement will make it to row 5813 of 19233 rows of data but it quits there? Any ideas on why it dies there?

Thank you for your help!

-------------------------------------------------------------

Sub power_calculator_SkyStream37()
Dim month As String
month = "Feb 2010"
Dim rowno As Double
rowno = 31
Dim temp As Double
temp = Range("E31").Value

While temp <> Empty
Sheets(month).Select
Range("E" & rowno).Select
temp = Selection.Value
'MsgBox (temp)
Select Case temp

Case 0 To 0.89
Range("M" & rowno).Value = 0
Case 0.89 To 1.34
Range("M" & rowno).Value = 0
Case 1.34 To 1.79
Range("M" & rowno).Value = 0
Case 1.79 To 2.24
Range("M" & rowno).Value = Sheets("Turbine Data").Range("F11").Value
Case 2.24 To 2.68
Range("M" & rowno).Value = Sheets("Turbine Data").Range("G11").Value
Case 2.68 To 3.13
Range("M" & rowno).Value = Sheets("Turbine Data").Range("H11").Value
Case 3.13 To 3.58
Range("M" & rowno).Value = Sheets("Turbine Data").Range("I11").Value
Case 3.58 To 4.02
Range("M" & rowno).Value = Sheets("Turbine Data").Range("J11").Value
Case 4.02 To 4.47
Range("M" & rowno).Value = Sheets("Turbine Data").Range("K11").Value
Case 4.47 To 4.92
Range("M" & rowno).Value = Sheets("Turbine Data").Range("L11").Value
Case 4.92 To 5.36
Range("M" & rowno).Value = Sheets("Turbine Data").Range("M11").Value
Case 5.36 To 5.81
Range("M" & rowno).Value = Sheets("Turbine Data").Range("N11").Value
Case 5.81 To 6.26
Range("M" & rowno).Value = Sheets("Turbine Data").Range("O11").Value
Case 6.26 To 6.71
Range("M" & rowno).Value = Sheets("Turbine Data").Range("P11").Value
Case 6.71 To 7.15
Range("M" & rowno).Value = Sheets("Turbine Data").Range("Q11").Value
Case 7.15 To 7.6
Range("M" & rowno).Value = Sheets("Turbine Data").Range("R11").Value
Case 7.6 To 8.05
Range("M" & rowno).Value = Sheets("Turbine Data").Range("S11").Value
Case 8.05 To 8.49
Range("M" & rowno).Value = Sheets("Turbine Data").Range("T11").Value
Case 8.49 To 8.94
Range("M" & rowno).Value = Sheets("Turbine Data").Range("U11").Value
Case 8.94 To 9.39
Range("M" & rowno).Value = Sheets("Turbine Data").Range("V11").Value
Case 9.39 To 9.83
Range("M" & rowno).Value = Sheets("Turbine Data").Range("W11").Value
Case 9.83 To 10.28
Range("M" & rowno).Value = Sheets("Turbine Data").Range("X11").Value
Case 10.28 To 10.73
Range("M" & rowno).Value = Sheets("Turbine Data").Range("Y11").Value
Case 10.73 To 11.18
Range("M" & rowno).Value = Sheets("Turbine Data").Range("Z11").Value
Case 11.18 To 11.62
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AA11").Value
Case 11.62 To 12.07
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AB11").Value
Case 12.07 To 12.52
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AC11").Value
Case 12.52 To 12.96
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AD11").Value
Case 12.96 To 13.41
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AE11").Value
Case 13.41 To 13.86
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AF11").Value
Case 13.86 To 14.31
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AG11").Value
Case 14.31 To 14.75
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AH11").Value
Case 14.75 To 15.2
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AI11").Value
Case 15.2 To 15.65
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AJ11").Value
Case 15.65 To 16.09
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AK11").Value
Case 16.09 To 16.54
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AL11").Value
Case 16.54 To 16.99
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AM11").Value
Case 16.99 To 17.43
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AN11").Value
Case 17.43 To 17.88
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AO11").Value
Case 17.88 To 18.33
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AP11").Value
Case 18.33 To 18.78
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AQ11").Value
Case 18.78 To 19.22
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AR11").Value
Case 19.22 To 19.67
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AS11").Value
Case 19.67 To 20.12
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AT11").Value
Case Else
Range("M" & rowno).Value = Sheets("Turbine Data").Range("AU11").Value

End Select

rowno = rowno + 1

Wend
End Sub

supes927
04-21-2010, 03:31 PM
Try making rowno 5811 or 5812 for testing purposes, it will start right near the spot its crashing. Use F8 - Step Into to go through your loop and see what values its putting into the variables etc. You may see the answer as you check it.
Of course if its not the actual record causing it you won't see anything, but this often illustrates the problem.

mdmackillop
04-21-2010, 04:59 PM
If you're dealing with that amount of data, you might find this method a bit quicker.

Sudsy
04-22-2010, 08:44 AM
Thank you for the help.

I have figured it out, its always simple things.

The statement,
"While temp <> Empty"
when temps value was zero the statement was no longer true and it would kick out of the loop. Simple.

Thank you again for the help!