03. april 2019 - 15:00Der er
3 kommentarer og 1 løsning
Nested loop i VBA Excel
Hej Eksperter.
Jeg får denne fejl:
Run-time error '6':
Overflow
I denne kode:
Sub vanddybde() Dim y As Integer, x As Integer, z As Integer, d As Integer, activeRow As Integer Const pi As Double = 3.141592654 Sheets("Ledningsdimensionering").Select activeRow = 10 Do While Cells(activeRow, 3).Value <> "" y = 0 z = Cells(activeRow, 36).Value d = Cells(activeRow, 20).Value d = d / 1000 Do While x < z x = 0.46 - 0.5 * Cos(pi * y / d) + 0.04 * Cos(2 * pi * y / d) y = y + 0.001 Loop Cells(activeRow, 35).Value = y Cells(activeRow, 37).Value = x activeRow = activeRow + 1 Loop End Sub
Som I måske kan se er jeg ikke vanvittigt dytig til VBA, så jeg kan ikke gennemskue hvad der er galt, selvom debuggeren fortæller mig at fejlen er i denne linje:
x = 0.46 - 0.5 * Cos(pi * y / d) + 0.04 * Cos(2 * pi * y / d)
Jeg forsøger at iterere mig frem til den værdi y skal have for at x og z bliver nogenlunde lige store.
Jeg har opdateret koden lidt, så x og z bliver næsten lige store og y derved mere præcis/realistisk. Jeg har også tilføjet 3 rækker data i Excel-arket, så jeg nu er oppe på 4. Koden fungerer fint i første række, men i de næste 3 rækker bliver y 70-80000 gange større end i række 1.
Sub vanddybde() Dim y As Double, x As Double, z As Double, d As Double, activeRow As Integer Const pi As Double = 3.141592654 Sheets("Ledningsdimensionering").Select activeRow = 10 Do While Cells(activeRow, 4).Value <> "" y = 0 x = 0 z = Cells(activeRow, 36).Value d = Cells(activeRow, 15).Value d = d / 1000 Do Until x > z - 0.0001 And x < z + 0.0001 x = 0.46 - 0.5 * Cos(pi * y / d) + 0.04 * Cos(2 * pi * y / d) y = y + 0.00005 Loop Cells(activeRow, 35).Value = y Cells(activeRow, 37).Value = x activeRow = activeRow + 1 Loop End Sub
Jeg få dette output for y i række 1-4:
Række 1: 0,0907 Række 2: 6836,9777 Række 3: 7294,8340 Række 4: 6466,3264
Hvis jeg fjerner "d = d / 1000" i koden får jeg dette output for y:
Række 1: 90,6489 Række 2: 88,0649 Række 3: 86,0658 Række 4: 89,6600
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.