Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1836to1840
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Do Exit mit Leerzeichen

Do Exit mit Leerzeichen
25.06.2021 11:31:16
fewsal
Hallo liebe Excel Forum Teilnehmer,
ich muss ein Notenprogramm schreiben, welches Noten ausschließlich über eine Inputbox aufnimmt und den Notenspiegel sowie Durchschnitt über eine Messagebox ausgibt.
Die Eingabe eines Leerzeichens in der Inputbox soll Inputbox beenden und den Notenspiegel und Durchschnitt ausgeben. Leider komme ich nicht drauf, wie die Inputbox das Leerzeichen ohne Fehler nimmt, so oft ich es probiert habe.
Aufgabe per Bild: https://www.herber.de/bbs/user/146792.jpg
Option Explicit

Sub noten()
Dim note As Integer, i As Integer, z As Variant
Dim x(1 To 5, 1 To 2)
Dim durchschnitt As Double
x(1, 1) = "Note 1"
x(1, 2) = "x(1)"
x(2, 1) = "Note 2"
x(2, 2) = "x(2)"
x(3, 1) = "Note 3"
x(3, 2) = "x(3)"
x(4, 1) = "Note 4"
x(4, 2) = "x(4)"
x(5, 1) = "Note 5"
x(5, 2) = "x(5)"
Line1:
Do
z = InputBox("Eingabe der Noten")
" If CDbl(z) = "" Then Exit Do " ?
If IsNumeric(z >= 1 And z 

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Do Exit mit Leerzeichen
25.06.2021 11:47:39
Oberschlumpf
Hi,
anstelle nur Code zeig doch bitte per Upload eine Bsp-Datei (nich Bild, sondern Excel!) mit allem, was erforderlich ist, um dein Problem zu verstehen.
Ciao
Thorsten
AW: Do Exit mit Leerzeichen
25.06.2021 11:52:24
fewsal
Hi
Danke für die schnelle Rückantwort.
https://www.herber.de/bbs/user/146796.xlsm
In der Datei ist in der VBA der Code hinterlegt.
Viele Grüße
Kevin(fewsal)
AW: Do Exit mit Leerzeichen
25.06.2021 12:36:00
Oberschlumpf
?
und wo in der Datei sind Daten, so dass man sehen kann, wohin weitere Daten eingetragen werden sollen?
AW: Do Exit mit Leerzeichen
25.06.2021 11:48:24
Pierre
Hallo,
versuch mal mit

SendKeys "{SPACE}"
irgendwas zu basteln.
Gruß Pierre
Anzeige
AW: Do Exit mit Leerzeichen
25.06.2021 13:07:59
Der
Hallo,
probier es mal so:

Sub noten()
Const MaxAnzahl = 5
Dim Eingabe As String
Dim Note As Long
Dim Summe As Long
Dim Anzahl As Long
Do
Eingabe = InputBox("Eingabe der Noten")
If IsNumeric(Eingabe) Then
If InStr(Eingabe, ",") Or InStr(Eingabe, ".") Then
MsgBox ("Bitte nur ganze Werte eingeben.")
Else
Note = CLng(Eingabe)
If Note >= 1 And Note  " " And Eingabe  "" Then MsgBox ("Bitte nur Zahlen eingeben!")
End If
Loop While Eingabe  " " And Eingabe  "" And Anzahl 

AW: Do Exit mit Leerzeichen
25.06.2021 13:32:36
Zwenn
Hallo fewsal,
eigentlich bin ich in solchen Fällen (Hausaufgaben) nicht dafür einfach eine Lösung zu präsentieren. Aber ich habe den Eindruck, im Moment lernst Du daraus mehr, als wenn man versucht Dich anzuleiten, damit Du selber drauf kommst. Das geht schon mit Deinem Sprung mit GoTo aus der Schleife heraus los. Vergiss GoTo bitte umgehend und benutze es nie wieder.
Hier eine der möglichen Lösungen, komplett kommentiert, damit Du sie nachvollziehen kannst:

Sub noten()
'Numerische Variablen werden in VBA immer mit 0 Initilisiert
'Es reicht ein eindimensionales Array von 1 bis 5 zur Abdeckung aller möglichen Noten
Dim note(1 To 5) As Long 'Im Array wird pro Note hochgezählt, wie oft sie eingegeben wurde
Dim eingabe As Variant   'Eingabe als Variant speichern, um ungültige Werte abfangen zu können
Dim anzahlNoten As Long  'Hier werden alle Werte im Array addiert
Dim summeNoten As Long   'Hier werden alle Werte im Array mit ihrem Notenwert multipliziert und addiert
Dim durchschnitt As Double 'Zur Aufnahme des Durchschnitts aus summeNoten / anzahlNoten
'Zuerst werden alle Noten eingegeben und die jeweilige Anzahl im Array gespeichert
Do
'Da die Variable eingabe vom Datentyp Variant ist, kann sie jeden Wert aufnehmen
eingabe = InputBox("Eingabe der Note")
'Die folgende Entscheidungsstruktur wertet die Variable eingabe aus und reagiert entsprechend
Select Case eingabe
Case " ": Exit Do             'Do Schleife verlassen, wenn ein Leerzeichen eingegeben wurde
Case 1: note(1) = note(1) + 1 'Für Note 1 um 1 hochzählen, wenn eine 1 eingegeben wurde
Case 2: note(2) = note(2) + 1 'Für Note 2 um 1 hochzählen, wenn eine 2 eingegeben wurde
Case 3: note(3) = note(3) + 1 'Für Note 3 um 1 hochzählen, wenn eine 3 eingegeben wurde
Case 4: note(4) = note(4) + 1 'Für Note 4 um 1 hochzählen, wenn eine 4 eingegeben wurde
Case 5: note(5) = note(5) + 1 'Für Note 5 um 1 hochzählen, wenn eine 5 eingegeben wurde
'Case Else reagiert auf alle sonstigen Eingaben, die sämtlich ungültig sind
Case Else: MsgBox "Ungültige Eingabe" & Chr(13) & _
"Bitte eine Zahl zwischen 1 und 5 eingeben" & Chr(13) & _
"Zum Verlassen ein Leerzeichen eingeben"
End Select
Loop
'Aufsummierung aller Werte im Array ergibt die Anzahl der eingegeben Noten
anzahlNoten = note(1) + note(2) + note(3) + note(4) + note(5)
'Multiplikation jedes Arraywertes mit seinem Notenwert und die Summierung ergibt die Summe aller Noten
summeNoten = note(1) + note(2) * 2 + note(3) * 3 + note(4) * 4 + note(5) * 5
'Wurden keine Noten eingegeben, muss die Division durch Null verhindert werden
If anzahlNoten > 0 Then
'Wurde mindestens eine Note eingegeben, wird der Durchschnitt berechnet
durchschnitt = summeNoten / anzahlNoten
End If
'Ausgabe der Ergebnisse nach Aufgabenstellung
MsgBox "Durchschnitt: " & Format(durchschnitt, "#.00") & Chr(13) & _
note(1) & "x Note 1" & Chr(13) & _
note(2) & "x Note 2" & Chr(13) & _
note(3) & "x Note 3" & Chr(13) & _
note(4) & "x Note 4" & Chr(13) & _
note(5) & "x Note 5"
End Sub
Viele Grüße,
Zwenn
Anzeige
AW: Do Exit mit Leerzeichen
25.06.2021 14:37:56
Daniel
Das wäre jetzt mein Ansatz:

Sub test()
Dim txt As String
Dim Noten(1 To 5) As Long
Dim i As Long
Do
txt = InputBox("Note eingeben")
Select Case txt
Case "1", "2", "3", "4", "5"
Noten(txt) = Noten(txt) + 1
Case " "
Exit Do
Case Else
MsgBox "Bitte Note zwischen 1 und 5 eingeben, oder Leer für beenden.", vbExclamation
End Select
Loop
With WorksheetFunction
txt = "Durchschnitt: " & Format(.SumProduct(Array(1, 2, 3, 4, 5), Noten) / .Sum(Noten), "0.0")
End With
For i = 1 To 5
txt = txt & vbLf & "Note " & i & ": " & IIf(Noten(i) = 0, "--", Noten(i) & "x")
Next
MsgBox txt, , "Notenspiegel"
End Sub
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige