InputBox Einträge in Variable merken

  • Excel

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von lordknoblauch.

    InputBox Einträge in Variable merken

    Hallo zusammen,

    derzeit als Student tätig beschäftige ich mich in einem Studienfach mit der VBA Programmierung.

    Dabei sitze ich derzeit vor einer Aufgabe die mir in einem Punkt schwierig erscheint.

    Die Aufagebe lautet wie folgt:

    Ein Programm welches eine Folge von nicht negativen, ganzen Zahlen über (InputBoxe) einliest und das Minimum, Maximum und den Mittelwert dieser Zahlen bestimmt und anschliesend ausgiebt (MsgBox) (Die Abfrage soll durch die Eingabe einer negativen Zahl beendet werden.

    Visual Basic-Quellcode

    1. Sub Datenanalyse()
    2. Dim Counter As Integer, Max As Integer, Zahl1 As Integer, Summe As Integer, Mittelwert As Integer
    3. Counter = 0
    4. Do
    5. Counter = Counter + 1
    6. Zahl1 = InputBox("eingabe")
    7. Loop Until Zahl1 < 0
    8. If Zahl1 > Zahl2 Then
    9. Max = Zahl1
    10. Else: Max = Zahl2
    11. End If
    12. If Zahl3 > Max Then Max = Zahl3
    13. MsgBox ("Die größte Zahl ist " & Max)
    14. MsgBox ("Der Mittelwert ist " & Mittelwert)
    15. End Sub


    Wie man das Problem des Maximums, Minimums und des Mittelwertes löst ist mir klar und funktioniert einwandfrei wenn man dem Benutzer durch eine beschrängte Zahleneingabe (Bsp. man deffiniert Zahl1, Zahl2, Zahl3 als InputBoxen) den Spielraum nimmt.

    Nun liegt das Problem darin das die Anzahl der einzugebenden Zahlen aber nicht vorgeschrieben werden soll, sondern einfach durch die Eingabe einer negativen Zahl geschehen soll.

    Dazu ist eine Schleife meines Wissens die beste Möglichkeit. Bloß hab ich jetzt das Problem wie ich mir jede einzelne Zahl bis zu dem Punkt wo eine negative Zahl eingegeben wird merke (Hilfsvariable?!) um dann alle Zahlen zu vergleichen und den Mittelwert zu bilden.

    Für sämtliche Tipps bin ich sehr Dankbar und bis dahin tüftle ich fleißig weiter ;)
    Eine Möglichkeit wäre, die Werte in einem Array abzulegen.

    Visual Basic-Quellcode

    1. Sub Datenanalyse()
    2. Dim s As String, Counter As Integer, Min As Integer, Max As Integer, zahl() As String, Summe As Integer, Mittelwert As Integer
    3. Min = 32767
    4. Counter = 0
    5. On Error Resume Next
    6. Do
    7. Mittelwert = InputBox("Bitte geben Sie eine Zahl zwischen 0 und 32767 ein." & vbLf & "(Ein negativer Wert beendet die Abfrage)", "Datenanalyse")
    8. If Err.Number > 0 Then
    9. MsgBox "Falsche Eingabe!", vbCritical + vbOKOnly, "Datenanalyse"
    10. Err.Clear
    11. Else
    12. If Mittelwert < 0 Then
    13. Exit Do
    14. Else
    15. If Mittelwert < Min Then Min = Mittelwert
    16. If Mittelwert > Max Then Max = Mittelwert
    17. Summe = Summe + Mittelwert
    18. ReDim Preserve zahl(Counter)
    19. zahl(Counter) = Mittelwert
    20. Counter = Counter + 1
    21. End If
    22. End If
    23. Loop
    24. Mittelwert = Int(Summe / Counter)
    25. MsgBox "Die kleinste Zahl ist " & Min & vbLf & "Die größte Zahl ist: " & Max & vbLf & "Der Mittelwert ist: " & Mittelwert, vbInformation + vbOKOnly, "Ergebnis"
    26. s = Join(zahl(), ",")
    27. MsgBox s, vbInformation + vbOKOnly, "Eingegebene Zahlen:"
    28. End Sub


    In dem Array hast Du dann alle eingegebenen Zahlen. Wenn Du diese nicht brauchst, kannst du es auch weglassen.

    So, ein paar Verbesserungen noch eingebaut...
    Gruß
    Peterfido

    Keine Unterstützung per PN!

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „peterfido“ ()

    Hallo,

    vielen Dank für deine Hilfe, dass Programm funktioniert jetzt genau so wie es soll.

    Ich habe noch eine Frage zu dem array:

    Visual Basic-Quellcode

    1. zahl(Counter) = Mittelwert
    2. Counter = Counter + 1


    So wie ich das verstehe wird jede eingegebene Zahl(Mittelwert) sich so gemerkt, dass der Counter bei jedem Durchlauf der Schleife um 1 höher geht. Also Speichert das Array sozusagen mehrere Variablen zahl(1) (1. Durchlauf) zahl(2) (2. Durchlauf)....verstehe ich das richtig?



    Nochmals vielen Dank für die Hilfe
    Könnte man lapidar so beschreiben.
    Wenn Du Dich in Deinem Studienfach mit Programmierung beschäftigst, sollte ein Array Dir nicht fremd sein. Ansonsten kann ein gescheites Buch übers Programmieren nicht schaden.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Beschäftige mich zwar mit Programmieren aber das ist nur ein Bruchteil meines gesamten Studiums (ist ansonsten nicht technisch sonder wirtschaftlich orientiert).

    Abgesehen davon habe ich laut Aussage meines Dozenten die grobe Ahnung das wir in der Klausur wohl nur PAP (Programm Ablauf Pläne) + Erklärungen schreiben sollen (deshalb nochmal die Nachfrage zur Funktionsweiße)

    Hast du selber gute Erfahrungen mit Literatur zum Programmieren (speziell im Bereich VBA) ?

    Vielen Dank!