Hallo Flo,
da sind gleich mehrere veraltete Angaben in dem Code. Erstens benutzt kein Mensch mehr die Rem-Anweisung (hab schon ganz vergessen, dass es die gibt). Kommentare werden stattdessen mit einem führenden Apostroph ' eingeleitet. Zweitens ist auch die While-Wend Schleife veraltet und wird wohl irgendwann aus VBA fliegen. Diese wurde durch Do-While-Loop ersetzt, was die gleiche Funktion hat. Drittens ist die Verwendung von GoTo tatsächlich veraltet. Das wird jedoch technisch noch im Zusammenhang mit der On Error Anweisung benötigt und von daher noch lange Zeit verfügbar sein. Anders sieht es mit GoSub aus. Das ist mittlerweile ausgestorben da es durch die normalen Sub-Prozeduren ersetzt wurde.
Nun zu deinem Code:
Für einen Anfänger gar nicht mal schlecht aufgebaut. Allerdings würde ich anstatt der Inputbox ein Userform mit einer Combobox verwenden. Diese kannst du im Initialize-Ereignis mit der .AddItem-Methode ganz leicht füllen.
Man könnte die GoTo Funktion ersetzen indem du den Code in eine Do-Loop-Schleife packst. Sieht dann in etwa so aus.
Do
autoklasse = InputBox("Welche Autoklasse benoetigen Sie? (Kombi, Kleinwagen, SUV)")
Do While autoklasse <> "Kombi" And autoklasse <> "Kleinwagen" And autoklasse <> "SUV"
autoklasse = InputBox("Bitte beachten Sie die zur Verfügung stehenden Autoklassen! (Kombi, Kleinwagen, SUV)")
Loop
Select Case autoklasse
Case "Kombi"
If kaufen_oder_leasing = "s" Then
aUTO_KLASSE = 30000
Else: aUTO_KLASSE = 200
End If
Case "Kleinwagen"
If kaufen_oder_leasing = "s" Then
aUTO_KLASSE = 15000
Else: aUTO_KLASSE = 100
End If
Case "SUV"
If kaufen_oder_leasing = "s" Then
aUTO_KLASSE = 40000
Else: aUTO_KLASSE = 300
End If
End Select
End_Preis = aUTO_KLASSE
If preis_limit < End_Preis Then MsgBox ("Preislimit überschritten.")
Loop Until preis_limit >= End_Preis
MsgBox ("Der Grundpreis für diese Autoklasse beträgt " & aUTO_KLASSE & " Euro")
Das ist allerdings nur die halbe Wahrheit. Denn du suchst ja nach einem Unterprogramm. Ein solches macht für den von dier geposteten Teil des Codes noch keinen Sinn. Wie sieht denn der restliche Code aus? Nur wenn man die ganze Wahrheit kennt, ließe sich da was machen. Ein Unterprogramm ist schlicht eine weitere Sub der du im Normalfall Paramter mitgeben kannst. Diese rufst du grundsätzlich mit der CALL-Anweisung auf. wobei du CALL auch weglassen kannst. Hauptsache der Name ist richtig geschrieben. Der Vorteil dabei ist, dass du das Unterprogramm mehrfach an verschiedenen Stellen des Codes aufrufen kannst.
Sub Hauptsub()
MacheDies
If Bedingung = True Then
Call MacheDies
Else
TuDas 8
End If
End Sub
Sub MacheDies()
'Dein Code
End Sub
Sub TuDas(DeinParameter As Long)
'DeinCode
End Sub
Ich würde dir aber nicht raten, einfach Goto Line1 durch Call Hauptsub zu ersetzen. Du wirst schnell die Meldung "Nicht genügend Stapelspeicher erhalten"
So, ich denke da waren jetzt einige Stichpunkte zum Googeln dabei. Beispiele wirst du damit zur Genüge finden. Um in deinem konkreten Fall weiterhelfen zu können benötigen wir aber erstmal den Rest deines Codes.
Gruß Mr. K.
|