Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA rechnet falsch?

Forumthread: VBA rechnet falsch?

VBA rechnet falsch?
30.11.2019 16:55:03
Salih
Guten Abend,
ich habe ein Programm geschrieben, welches folgende Tabelle ausfüllen soll.
Userbild
Dabei soll wird die Tabelle so gelesen:
Es sind verschiedene Profile untereinander aufgelistet, z.B. mehrere Rechtecke, Kreise ...
und in der Spalte B findet man die Werte für die Parameter (h= Höhe, b= Breite...).
Mit dem Modul "Berechung" werden die Spalten D bis L ausgefüllt. Mein Programm liefert bei den ersten Profilen zwar
richtige Ergebnisse, aber ab dem Kreis erhalte ich falsche Ergebnisse und ich verstehe nicht warum.
Entweder erhalte ich den Wert 0 oder #Name ?, beides sollte nicht sein.
Der Code im Modul "Berechnung" lautet:
Public z As Integer

Sub Berechnung()
z = 2
lastrow = Worksheets("Test2").Cells(Rows.Count, 1).End(xlUp).Row
'Berechnugsschleife
While z 

Sub Rechteck()
h = Worksheets("Test2").Cells(z, 3).Value
b = Worksheets("Test2").Cells(z + 1, 3).Value
Worksheets("Test2").Cells(z, 4).Value = b * h
Worksheets("Test2").Cells(z, 5).Value = b * h ^ 3 / 12
Worksheets("Test2").Cells(z, 6).Value = b * h ^ 3 / 3
Worksheets("Test2").Cells(z, 7).Value = b * h ^ 2 / 6
Worksheets("Test2").Cells(z, 8).Value = b ^ 2 * h ^ 2 / (3 * h + 1.8 * b)
Worksheets("Test2").Cells(z, 9).Value = h / b
Worksheets("Test2").Cells(z, 10).Value = 2.38 * h / b
Worksheets("Test2").Cells(z, 11).Value = (h / b) ^ 0.5
Worksheets("Test2").Cells(z, 12).Value = 1.6 * (b / h) ^ 0.5 * (1 / (1 + 0.6 * b / h))
End Sub

Sub Dreieck()
a = Worksheets("Test2").Cells(z, 3).Value
'Berechnung A
Worksheets("Test2").Cells(z, 4).Value = "=a^2*((3)^0.5/4)"
'Berechnung I
Worksheets("Test2").Cells(z, 5).Value = "=a^4/(32*3^0.5)"
'Berechnung K
Worksheets("Test2").Cells(z, 6).Value = "=(a^4*(sqrt(3))/80)"
'Berechnung Z
Worksheets("Test2").Cells(z, 7).Value = "=a^3/32"
'Berechnung Q
Worksheets("Test2").Cells(z, 8).Value = "=a^3/20"
'Berechnung phi_e_B
Worksheets("Test2").Cells(z, 9).Value = "=2/3^0.5"
'Berechnung phi_e_T
Worksheets("Test2").Cells(z, 10).Value = "=0.832"
'Berechnung phi_f_B
Worksheets("Test2").Cells(z, 11).Value = "=3^0.25/2"
'Berechnung phi_f_T
Worksheets("Test2").Cells(z, 12).Value = "=0.83"
End Sub

Sub Kreis()
r = Worksheets("Test2").Cells(z, 3).Value
'Berechnung A
Worksheets("Test2").Cells(z, 4).Value = "=r^2*pi()"
'Berechnung I
Worksheets("Test2").Cells(z, 5).Value = "=r^4*pi()/4"
'Berechnung K
Worksheets("Test2").Cells(z, 6).Value = "=r^4*pi/2"
'Berechnung Z
Worksheets("Test2").Cells(z, 7).Value = "=r^3*pi()/4"
'Berechnung Q
Worksheets("Test2").Cells(z, 8).Value = "=r^3*pi()/2"
'Berechnung phi_e_B
Worksheets("Test2").Cells(z, 9).Value = "=3/pi()"
'Berechnung phi_e_T
Worksheets("Test2").Cells(z, 10).Value = "=1.14"
'Berechnung phi_f_B
Worksheets("Test2").Cells(z, 11).Value = "=3/(2*pi()^0.5)"
'Berechnung phi_f_T
Worksheets("Test2").Cells(z, 12).Value = "=1.35"
End Sub

Sub Ellipse()
a = Worksheets("Test2").Cells(z, 3).Value
b = Worksheets("Test2").Cells(z + 1, 3).Value
'Berechnung A
Worksheets("Test2").Cells(z, 4).FormulaR1C1 = "=a*b*pi()"
'Berechnung I
Worksheets("Test2").Cells(z, 5).FormulaR1C1 = "=a^3*b*(pi()/4)"
'Berechnung K
Worksheets("Test2").Cells(z, 6).FormulaR1C1 = "=pi()*a^3*b^3/(a^2+b^2)"
'Berechnung Z
Worksheets("Test2").Cells(z, 7).FormulaR1C1 = "=pi()/4*a^2*b"
'Berechnung Q
Worksheets("Test2").Cells(z, 8).FormulaR1C1 = "=pi()/2*a^2*b"
'Berechnung phi_e_B
Worksheets("Test2").Cells(z, 9).FormulaR1C1 = "=3/pi()*a/b"
'Berechnung phi_e_T
Worksheets("Test2").Cells(z, 10).FormulaR1C1 = "=2.28*a*b/(a^2+b^2)"
'Berechnung phi_f_B
Worksheets("Test2").Cells(z, 11).FormulaR1C1 = "=3/(2*pi()^0.5)*(a/b)^0.5"
'Berechnung phi_f_T
Worksheets("Test2").Cells(z, 12).FormulaR1C1 = "=1.35*(a/b)^0.5"
End Sub

Sub Hohlzylinder()
r = Worksheets("Test2").Cells(z, 3).Value 'Außenradius
t = Worksheets("Test2").Cells(z + 1, 3).Value 'Dicke
ri = r0 - t 'Innenradius
'Berechnung A
Worksheets("Test2").Cells(z, 4).FormulaR1C1 = "=pi()*(r^2-ri^2)"
'Berechnung I
Worksheets("Test2").Cells(z, 5).FormulaR1C1 = "=pi()/4*(r^4-ri^4)"
'Berechnung K
Worksheets("Test2").Cells(z, 6).FormulaR1C1 = "=pi()/2*(r^4-ri^4)"
'Berechnung Z
Worksheets("Test2").Cells(z, 7).FormulaR1C1 = "=pi()/4/r*(r^4-ri^4)"
'Berechnung Q
Worksheets("Test2").Cells(z, 8).FormulaR1C1 = "=pi()/2/r*(r^4-ri^4)"
'Berechnung phi_e_B
Worksheets("Test2").Cells(z, 9).FormulaR1C1 = "=3*r/pi()/t"
'Berechnung phi_e_T
Worksheets("Test2").Cells(z, 10).FormulaR1C1 = "=1.14*r/t"
'Berechnung phi_f_B
Worksheets("Test2").Cells(z, 11).FormulaR1C1 = "=3/((2*pi())^0.5)/(r/t)^0.5"
'Berechnung phi_f_T
Worksheets("Test2").Cells(z, 12).FormulaR1C1 = "=1.91*(r/t)^0.5"
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA rechnet falsch?
30.11.2019 17:33:04
onur
Du schreibst zwar:
r = Worksheets("Test2").Cells(z, 3).Value

aber damit wird nur der WERT für r an VBA übergeben. Die Formel die du schreibst enthält aber nur den BUCHSTABEN r und Excel kann damit nix anfangen.
Das gilt aber auch für deine anderen Formeln (Dreieck mit a und Rechteck mit h und b), die können auch nicht richtig sein.
Wieso musst du denn die FORMELN in die Tabelle eintragen und nicht die WERTE?
Entweder VBA oder EXCEL - aber wozu Beides?
Anzeige
AW: VBA rechnet falsch?
30.11.2019 17:41:54
onur
Ausserdem steht da auch mind. einmal pi statt pi().
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige