Sprachen zum Programmieren VBA

Von: , Frage gestellt am So, 5. Apr 2009

Hallo,

ich habe eine Frage zu einer alten Schulaufgabe, von der ich die Lösung aber nicht kenne:

Die Mitglieder eines Vereins erhalten am Jahresende eine Quittung über Ihre Mitgliedsbeiträge und Spenden. Die folgende Prozedur Namens "QuittungFinanzamt" soll mittels geeigneter Schleifen ergänzt werden, und zwar in der Weise, dass alle Eingaben des Anwenders mit einer Fehlermeldung so lange abgelehnt werden, bis für die Variable "Mitgliedbeitrag" der Wert 0 oder 200 und für die Variable "Spende" ein Wert größer oder gleich 0 eingegeben wurde.


Sub QuittungFinanzamt()
Dim Summe As Double
Dim Spende As Double
Dim Mitgliedsbeitrag As Double

..................=inputbox("Bitte Mitgliedsbeitrag eingeben")

..................=inputbox ("Bitte Höhe der Spende eingeben")

..................=Berechnung (Mitgliedbeitrag, Spende)

Msgbox("Die Summe beträgt:"&Summe)

End Sub
--------------------------------------------------------------------
Function Berechnung (....................................) as double

End Function

8 Antworten zu dieser Frage

  1. Antwort von nach 17 Stunden 0 hilfreich
    Re: Sprachen zum Programmieren VBA

    Hallo,

    wie gefällt Dir das? Die beiden schleifen könnte man auch zusammenfassen.

    Fruß Rainer

    Sub QuittungFinanzamt()
    Dim Summe As Double
    Dim Spende As Double
    Dim Mitgliedsbeitrag As Double
    
    Do
        Mitgliedsbeitrag = Val(InputBox("Bitte Mitgliedsbeitrag eingeben"))
    Loop While Mitgliedsbeitrag <> 0 And Mitgliedsbeitrag <> 200
    
    Do
        Spende = Val(InputBox("Bitte Höhe der Spende eingeben"))
    Loop While Spende < 0
    
    Summe = Berechnung(Mitgliedbeitrag, Spende)
    
    MsgBox ("Die Summe beträgt: " & Summe)
    
    End Sub
    --------------------------------------------------------------------
    Function Berechnung(ByVal Beitrag As Double, ByVal Spende As Double) As Double
        Berechnung = Beitrag + Spende
    End Function
    

    • Antwort von nach 18 Stunden 0 hilfreich
      Korrektur

      Hallo Rainer,

      Summe = Berechnung(Mitgliedsbeitrag, Spende)

      Option Explicit
      '
      Sub QuittungFinanzamt()
      Dim Summe As Double
      Dim Spende As Variant
      Dim Mitgliedsbeitrag As Variant
      Do
          Mitgliedsbeitrag = InputBox("Bitte Mitgliedsbeitrag eingeben")
      Loop While Mitgliedsbeitrag <> "0" And Mitgliedsbeitrag <> "200" And Not IsNumeric(Mitgliedsbeitrag)
      Do
          Spende = InputBox("Bitte Höhe der Spende eingeben")
      Loop While Spende < 0 Or Not IsNumeric(Spende)
      Summe = Berechnung(Mitgliedsbeitrag, Spende)
      MsgBox "Die Summe beträgt: " & Format(Summe, "0.00")
      End Sub
      '--------------------------------------------------------------------
      Function Berechnung(ByVal Beitrag As Double, ByVal Spende As Double) As Double
          Berechnung = Beitrag + Spende
      End Function
      


      Gruß
      Reinhard

      • Antwort von nach 18 Stunden 0 hilfreich
        Re: Korrektur

        Hallo Reinhard, Summe = Berechnung(Mitgliedsbeitrag, Spende)
        stimmt! Den Fehler habe ich aus dem Original mit kopiert und nicht bemerkt, weil ich den Code nicht getestet habe. :-)

        Gruß Rainer

    • Antwort von nach 21 Stunden 0 hilfreich
      Re: Schleifen in VBA (fürs Archiv, owT)

      Hallo Ralf,

      für's Archiv ist das noch recht mager, das Beispiel enthält ja nur eine bestimmte Schleife.

      Ich schreibe mal noch weitere Beispiele dazu, damit man auch etwas damit anfangen kann, wenn der Beitrag im Archiv gefunden wird. :-)

      Wenn man shon weiß, wie oft die Schleife durchlaufen wird, kann man eine Zählschleife verwenden:

      For i = Startwert To Endwert Step Schrittweite 'kann auch negativ sein
          n = n + 1 'tu etwas 
      Next
      


      Sonst verwendet man eine Schleife mit einer Abbruchbedingung.
      Die können kopfgesteuert oder fussgesteuert sein.

      Eine Kopfgesteuerte Schleife verwendet man, wenn die Schleife nur unter bestimmten Bedingungen durchlaufen werden soll.

      Eine fussgesteuterte Schleife, wenn das Programm in jedem fall in die Schleife laufen soll und die unter bestimmten Bedingungen immer wiederholt werden soll.

      Die einfachste Kopfgesteuerte Schleife:

      While tm < Timer
         DoEvents
      Wend
      


      oder auch:

      Do While tm < Timer
         Doevents
         If k <>0 
            Exit Do
         End If
      Loop
      


      Die schleife wartet auf den timer, man kann aber auch mit einer weiteren Abbruchbedingung die Schleife vorzeitig verlassen.

      Fussgesteuert dann wie schon im Beispiel geschrieben:

      Do 
         Eingabe = UCase(Inputbox "Bitte etwas eingeben, 'Q' für Quit")
         'mach was damit ... 
      Lopp While Eingabe <> "Q"
      


      Hab' ich etwas vergessen?

      Gruß Rainer

      • Antwort von nach 22 Stunden 0 hilfreich
        Re^2: Schleifen in VBA (fürs Archiv, owT)

        Hab' ich etwas vergessen?
        Hallo Rainer,

        jain, in sehr seltenen Ausnahmefällen muß man das tun was ansonsten sehr verpönt ist, mit
        If "Bedingung" Then Goto Sprungmarke.
        Was ja quasi auch eine Art Schleife bildet/bilden kann.
        Wenn es aber keine sehr speziellen (z.B. zeitkritische) Gründe gibt, ist
        If "Bedingung" Then Goto Sprungmarke.
        unsauberes Programmieren, ergibt schwer lesbaren Code, mal von
        On Error Goto Errorhandler o.ä.
        abgesehen.

        Ansonsten hast du ja alles genannt, auch wenn mir die Lopp-Schleife neu ist, sicher etwas was es nur in VB6.0 gibt *grins*

        Und, ja, diese Beitragsfolge ist eh nur für das Archiv *einschätz*
        Gründe für diese brutale Unterstellung:

        a) http://wer-weiss-was.de/article/5107883
        b) das Eintrittsdatum des Anfragers.
        c) diesbezügliche Erfahrungen meinerseits.
        d) Mit Speck fängt man Mäuse, vielleicht entlockt ja mein Beitrag dem Anfragesteller ein Feedback *bin berechnend* :-)

        Gruß
        Reinhard

        • Antwort von nach 22 Stunden 0 hilfreich
          Re^3: Schleifen in VBA (fürs Archiv, owT)

          Hallo Reinhard, If "Bedingung" Then Goto Sprungmarke.
          brrrr *schüttel* ... Hab' ich erfolgreich verdrängt, daß es das auch mal gab.

          Danke, daß Du kein Beispiel getippt hast. :-)

          Gruß Rainer

      • Antwort von nach einem Tag 0 hilfreich
        Re^2: Schleifen in VBA (fürs Archiv, owT)

        Moin, Rainer,

        es ging mir nicht darum, hier alle Schleifentypen aufgezählt zu kriegen, sondern um die Archivsuche. "Sprachen in VBA" - das grenzt doch an Irreführung.

        Gruß Ralf

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!