#1 23. Januar 2009 VBA Berechnung Hallo Checker:...... Kleine Frage versuche gerade eine Formel zu schreiben zur berechnung von dem Volumen eines Kegelstumpfes aber ich bekomm das nicht so hin? Hier der Quelltext: Code: Private Sub CommandButton2_Click() ' Volumen eines Kegelstumpfes Dim x As Single Dim g As Single ' Die Höhe des Kegelstumpfes Dim h As Single ' Volumen in mm² Dim v As Integer Const z As Single = 0.33 Const pi As Single = 3.141593 x = InputBox("Wie groß ist der untere Radius?", "Größe des unteren Radius!") g = InputBox("Wie groß ist der obere Radius?", "Größe des oberen Radius!") 'Höhe des Kegelstumpfes h = InputBox("Wie ist die Höhe des Kegelstumpfes?", "Höhe des Kegelstumpfes!") v = z * pi * h * x ^ 2 + g ^ 2 + x * g If x & y <= 0 Then Range("F6").Value = x Range("F7").Value = g Range("G6").Value = "Falsche Eingabe" Range("F8").Value = "" MsgBox (" Kein zulässiger Durchmesser ( NUR POSITIVE Radius!!!) ") Else Range("F6").Value = x Range("F7").Value = g Range("G6").Value = v Range("F8").Value = "" End If End Sub + Multi-Zitat Zitieren
#2 23. Januar 2009 AW: VBA Berechnung Was passiert denn? Kommt das falsche Ergebnis heraus? Ich meine zumindenst, dass es so richtig sein müsste: v = z * pi * h * (x * x + g * g + x * g) Also Klammern vergessen! + Multi-Zitat Zitieren
#3 23. Januar 2009 AW: VBA Berechnung Wie mein Vorredner schon sage es Fehlen nur die klammern dann klappt das auch . Habe es gerade mal getestet Vll. Solltest du noch v als Singel machen, ansonsten hast du bei deinem Ergebnis keine Nachkommastellen... (falls das wichtig ist). Aber ansonsten sollte es klappen Gruß Farin + Multi-Zitat Zitieren
#4 23. Januar 2009 AW: VBA Berechnung Was willst du damit Code: If x & y <= 0 Then prüfen? Und wo kommt y her? Wenn du prüfen willst, ob eine von den beiden Werten <= 0 ist, machs so: Code: If x <= 0 Or y <= 0 Then Wenn du prüfen willst, ob beide 0 sind, so: Code: If x <= 0 And y <= 0 Then Kannst auch Klammern setzen, wenns komplexer wird. Aber so wird die die If-Abfrage nix bringen, weils y net gibt 8o :baby: + Multi-Zitat Zitieren
#5 23. Januar 2009 AW: VBA Berechnung farin.. ich glaub dir das nich, das dus getestet hst udn das es jetzt bei dir funzt!. weil der liebe gibbon hat recht..(glaub ich zumindest ) wenn man bei vba was nicht deklariert und es abfragt sollte er normaler weise ne fehlermeldung haben.. von wegen"Variable nicht definiert" denke dann , das er sich verschrieben hat und y eigentlich g ist. udn so als kleienr tipp,was ich während meiner kurzen, aber doch teilweise nervigenn vb zeit gelernt hab.. geb am besten den variablen passende namen, weil sonst vertauscht man die ganz schnell!.. und ich würd hier: Code: If x & y <= 0 Then auch noch abfragen, ob h also die höhe auch eine korrekte eingabe ist.. ansonsten hat gibbon eigentlich schon das meiste gesagt.. ^^ + Multi-Zitat Zitieren
#6 23. Januar 2009 AW: VBA Berechnung Doch Tut es^^ sind zwar viele Fehler drin da muss ich dir recht geben^^ , aber es geht... Beweiss hier ist der Screen. Hatte es vorhin nur kopiert und die Formel verbessert, sodass das richtige ergebnis rauskam^^. Den rest hatte ich mir nicht angesehen. Klicke auf das bild und siehe es geht -.- Nächste mal lese ich mir den ganzen Code durch ^^ *g* Bild Lg Farin + Multi-Zitat Zitieren
#7 23. Januar 2009 AW: VBA Berechnung ich muss zugeben, das ich jetzt leichrt verwirrt bin.. ich hab von anfang an gelernt, das man eig keien variablen abfragen kann, die nicht deklariert sind.. is ja so, als wenn ich nen baum fällen will ohne baum.^^ naja habs auch grad getestet.. kann mir das dann eigentlich nru so erklären, das der dem "y" dann den autowert 0 gegeben hat udn das es deswegen fuktioniert hat.. oder hat da doch jemand eien bessere idee?! und.. sry farin, das ich an dir gezweifelt habe..^^ manchmal sollte man nich nur logisch denken, sondern auch ausprobieren.. mein fehler + Multi-Zitat Zitieren
#8 23. Januar 2009 AW: VBA Berechnung Geht auch nur, wenn man nicht ganz oben "Option Explicit" angegeben hat. Deswegen sollte man das immer machen, das verhindert nämlich den Zugriff auf nicht existente Variablen (bzw. legt sie nicht implizit an). Ein weiterer Grund, der dafür spricht, das zu verwenden, ist, dass es in (fast?) allen Programmieresprachen so is, dass man Variablen definieren muss, bevor man sie verwenden kann. Beispielsweise auch VB.NET :] Ne, die Variable wird als leerer String angelegt. Mit Typen nimmt es VBA/VB6 auch nicht so ernst, das meiste wird implizit konvertiert, wenn man zu faul is, es richtig zu machen Beispielsweise kann man einfach einer String-Variablen den Wert einer Integer-Variablen zuweisen, ohne explizite Konvertierung. Würde in C#, C, C++, ... nicht gehen. Wie ich aber grade sehe, gehts in VB.NET immernoch + Multi-Zitat Zitieren
#9 24. Januar 2009 So ist es habe mich verschrieben! Also ich hab es nochmal probiert aber das funzt nicht könnte mir jemand bei dem alles soweit funktioniert hat mal denn Quelltext schicken bitte?!!? Bei der eingabe von unterem Radius = 40 oberen Radius = 20 und der Höhe = 30 sollte eignetlich 87964,59 rauskommen Danke + Multi-Zitat Zitieren
#10 24. Januar 2009 AW: VBA Berechnung Ich kanns nicht kontrollieren, aber so müsste es sein: Code: Private Sub CommandButton2_Click() ' Volumen eines Kegelstumpfes Dim x As Single Dim g As Single ' Die Höhe des Kegelstumpfes Dim h As Single ' Volumen in mm² Dim v As Integer Const z As Single = 0.33 Const pi As Single = 3.141593 x = InputBox("Wie groß ist der untere Radius?", "Größe des unteren Radius!") g = InputBox("Wie groß ist der obere Radius?", "Größe des oberen Radius!") 'Höhe des Kegelstumpfes h = InputBox("Wie ist die Höhe des Kegelstumpfes?", "Höhe des Kegelstumpfes!") v = z * pi * h * (x * x + g * g + x * g) If x & g <= 0 Then Range("F6").Value = x Range("F7").Value = g Range("G6").Value = "Falsche Eingabe" Range("F8").Value = "" MsgBox (" Kein zulässiger Durchmesser ( NUR POSITIVE Radius!!!) ") Else Range("F6").Value = x Range("F7").Value = g Range("G6").Value = v Range("F8").Value = "" End If End Sub + Multi-Zitat Zitieren
#11 24. Januar 2009 AW: VBA Berechnung Bei mir kommt dann da laufzeitfehler oder so ne + Multi-Zitat Zitieren
#12 24. Januar 2009 AW: VBA Berechnung da sieht man wer sich das nich ma wirklich durchließt @chillkid.. im post von gibbon steht ja, das y & g in dem fall nich korrekt is aber geht.. muss y <=0 or g <= 0 sein..,weil der sonst nur dne fehler ausgibt, wenn beide zahlen eien negative eingabe sind. warte ich mach dir den quelltext korrekt. kleien korrektur. bei unterem radius von 40 oberen von 20 und höhhe von 30 komtm da =87084,95796 und das überlaufen bei dir liegt daran, das integer nur ganzzahlen von -32.768 bis 32.767 single geht da udn das hab ich dir dan nauch schon eingebaut Code: Private Sub CommandButton2_Click() ' Volumen eines Kegelstumpfes Dim x As Single Dim g As Single ' Die Höhe des Kegelstumpfes Dim h As Single ' Volumen in mm² Dim v As Single Const z As Single = 0.33 Const pi As Single = 3.141593 x = InputBox("Wie groß ist der untere Radius?", "Größe des unteren Radius!") g = InputBox("Wie groß ist der obere Radius?", "Größe des oberen Radius!") 'Höhe des Kegelstumpfes h = InputBox("Wie ist die Höhe des Kegelstumpfes?", "Höhe des Kegelstumpfes!") v = z * pi * h * (x * x + g * g + x * g) If x <= 0 or g <= 0 Then Range("F6").Value = x Range("F7").Value = g Range("G6").Value = "Falsche Eingabe" Range("F8").Value = "" MsgBox (" Kein zulässiger Durchmesser ( NUR POSITIVE Radien!!!) ") Else Range("F6").Value = x Range("F7").Value = g Range("G6").Value = v Range("F8").Value = "" End If End Sub sollte jetz funktionieren. + Multi-Zitat Zitieren
#13 24. Januar 2009 AW: VBA Berechnung Super danke schön jetzt klappt es .... was genau hab ich falsch gemacht? + Multi-Zitat Zitieren
#14 24. Januar 2009 AW: VBA Berechnung Vergeleiche doch mal dein Code mit dem Letzten der gepostet wurde, dann weisst du doch was du falsch oder nicht richtig gemacht hast. LG Farin + Multi-Zitat Zitieren
#15 24. Januar 2009 AW: VBA Berechnung Tut mir ja wirklich leid, aber das kann ich nun wirklich nicht auf mir sitzen lassen! Ich habe schließlich als erster überhaupt den Formelfehler entdeckt und dafür, dass der Code auch Müll ist, kann ich nichts, da ich nunmal kein VB programmiere sondern C++. Ich habe daher in meinem Code die Formel berichtigt und dass was ich aus eurern verworrenen Antworten zu dieser Abfrage entnehmen konnte...wie gesagt, ich habe auch abei geschrieben, dass es ungetestet ist... + Multi-Zitat Zitieren
#16 24. Januar 2009 AW: VBA Berechnung prächtig.die formel i-wo raussuchn war der bringer und ohne dich hätte das keiner geschafft vor alle mmit dem quelltext. und die stelle mit dem y & g <=0 wäre auch in c++ schwachsinn.. kenn ich mich nämlich auch wohln bissl aus. und was war daran so verwirrend? wenn man sich die zeit genommen hat und es sich aufmerksam durchgelesen hat, dann hat man es eigentlich auch verstanden, wenn man sich zumindest ansatzweise vorstellen konnte, was gemeint ist.. und nun zu dir xbox. du hattest: Code: Dim v As Integer ansich ganz okay. aber nich, wenn du bei dem ergebnis komma zahlen vorkommen können, da integer wie schon gesagt nur ganzezahlen(z.b. 1 und 2 udn 3 etc) also keien komma zahlen wie (1,1 und 2,5) ausgibt. wie umgeht man das problem? ganz einfach. man nimmt nen datentyp, der nen größeres spektrum hat und auch komma zahlen anzeigt. z.b. single. hier nochmal die vb datentypen.: http://www.shadoware.de/vb/tutorials/datatypes.html#start Code: If x & g <= 0 Then die box mit der fehlermeldugn gibt der dan nnur aus, wenn jeweils x und g einen 0- oder negativen wert haben. und das dann eigentlich leicht zu ändern, indem man das "&" zu einem "or" macht, somit komtm auch die box mit dem fehler, die du eingebaut hast, wenn auch nur einer der radien nicht korrekt ist. das wars dann eigentlich. es sei den ich hab was vergessen. dann sry + Multi-Zitat Zitieren