Hallo zusammen,
leider bin ich mit dem Gebiet der Programmierung nicht sonderlich gut vertraut, weshalb sich für mich folgende Frage ergibt: Wie schaffe ich es mit Excel VBA mehrere Maximalwerte ausgeben zu lassen? Bevor ich das ganze besser zu erklären versuche, ersteinmal der Code:
Public Sub Fakultätenfinder()
Dim max As Integer
Dim i As Integer
Dim lieblingsfakultaet As Integer
Dim antwort As String
Dim prozentsatzLLF As Single
Dim maximalePunkte(1 To 14) As Integer
max = 0
i = 1
lieblingsfakultaet = 0
maximalePunkte(1) = 100
maximalePunkte(2) = 100
maximalePunkte(3) = 100
maximalePunkte(4) = 100
maximalePunkte(5) = 100
maximalePunkte(6) = 100
maximalePunkte(7) = 100
maximalePunkte(8) = 100
maximalePunkte(9) = 100
maximalePunkte(10) = 100
maximalePunkte(11) = 100
maximalePunkte(12) = 100
maximalePunkte(13) = 100
maximalePunkte(14) = 100
'Userform1 aufrufen
UserForm1.Show
'Userform2 wird in Userform1.CommandButton1 aufgerufen
'Userform3 wird in Userform2.CommandButton1 aufgerufen
MsgBox (zaehler(1) & "und" & zaehler(2) & "und" & zaehler(3))
'Maximumbestimmung
Do
If zaehler(i) > max Then
'gesammelte Punkte:
max = zaehler(i)
'geeignete Fakultät:
lieblingsfakultaet = i
i = i + 1
Else: i = i + 1
End If
Loop Until i = 15
'Überschneidungen in Prozent:
i = 1
MsgBox ("Prüfung: Maximum liegt bei " & max)
Do
If zaehler(i) = max Then
prozentsatzLLF = (zaehler(i) / maximalePunkte(i))
i = 15
Else: i = i + 1
End If
Loop Until i = 15
MsgBox (" Der Prozentsatz der Übereinstimmung beträgt " & prozentsatzLLF)
'Ausgabe für den Fall "Abbrechen"
If lieblingsfakultaet = 0 Or UserForm1.CommandButton2.Enabled = True Or UserForm2.CommandButton2.Enabled = True Or UserForm3.CommandButton2.Enabled = True Then
antwort = InputBox("Wollen Sie den Test neu starten? ja/nein")
If antwort = "ja" Or antwort = "Ja" Or antwort = "j" Or antwort = "J" Then
Call Fakultätenfinder
End If
'Ausgabe für den Fall "Mehrere Lieblingsfakultäten"
'Ausgabe für den Fall "Eine Lieblingsfakultät"
Else: MsgBox ("Ihre beste Wahl sich umzuschauen wäre bei der " & lieblingsfakultaet & ". Fakultät. Sie haben mit dieser " & max & " Überschneidungspunkte")
End If
End Sub
Die Idee hinter dem Programm ist eine Art Fragebogen mithilfe von UserFormen, bei welcher durch das Anklicken von verschiedenen Antwortmöglichkeiten Zähler erhöht werden (14 Stück) und zum Schluss der Zähler bzw die Zähler mit der maximal erreichten Punkzahl (bzw dem maximal erreichten Prozentsatz) ausgegeben werden. Wie schaffe ich es nun, das Maximum auszugeben, wenn mehrere Zähler gleich hoch sind? Achja: zaehler(1 to 14) wurde in einem Modul mit Global definiert.
Übrigens: Die Ausgabe für einen maximalen Zähler klappt eigentlich gut. Jedoch hat sich wohl irgendwo in der folgenden If-Schleife ein Fehler eingeschlichen, sodass er nicht zur MsgBox bei Else springt. Ich hab mich da schon ne gefühlte Ewigkeit drangesetzt, weiß aber nicht, was da falsch ist.. Falls irgendwem der Fehler auffällt, wäre ich sehr dankbar für seine Hilfe.
If lieblingsfakultaet = 0 Or UserForm1.CommandButton2.Enabled = True Or UserForm2.CommandButton2.Enabled = True Or UserForm3.CommandButton2.Enabled = True Then
antwort = InputBox("Wollen Sie den Test neu starten? ja/nein")
If antwort = "ja" Or antwort = "Ja" Or antwort = "j" Or antwort = "J" Then
Call Fakultätenfinder
End If
'Ausgabe für den Fall "Mehrere Lieblingsfakultäten"
'Ausgabe für den Fall "Eine Lieblingsfakultät"
Else: MsgBox ("Ihre beste Wahl sich umzuschauen wäre bei der " & lieblingsfakultaet & ". Fakultät. Sie haben mit dieser " & max & " Überschneidungspunkte")
End If
Vielen Dank für Eure Hilfe!
|