[Code] VBA Berechnung

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von X360, 23. Januar 2009 .

Schlagworte:
  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
     
  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!
     
  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
     
  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:
     
  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.. ^^
     
  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
     
  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
     
  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
     
  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
     
  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
     
  11. 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.
     
  12. 24. Januar 2009
    AW: VBA Berechnung

    Super danke schön jetzt klappt es .... was genau hab ich falsch gemacht?
     
  13. 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
     
  14. 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...
     
  15. 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
     
  16. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.