Thema Datum  Von Nutzer Rating
Antwort
29.06.2020 17:46:10 Flo E.
NotSolved
Blau Unterprogramm anstatt GoTo-Funktion
29.06.2020 19:34:15 xlKing
NotSolved
30.06.2020 23:49:12 Gast69932
NotSolved
01.07.2020 15:53:06 Gast85995
NotSolved
01.07.2020 16:45:26 Gast64967
NotSolved
01.07.2020 17:14:01 Gast15071
NotSolved
01.07.2020 17:26:31 Gast83649
NotSolved
01.07.2020 17:38:50 Gast42607
NotSolved
01.07.2020 17:59:47 Gast34917
NotSolved

Ansicht des Beitrags:
Von:
xlKing
Datum:
29.06.2020 19:34:15
Views:
583
Rating: Antwort:
  Ja
Thema:
Unterprogramm anstatt GoTo-Funktion

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.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
29.06.2020 17:46:10 Flo E.
NotSolved
Blau Unterprogramm anstatt GoTo-Funktion
29.06.2020 19:34:15 xlKing
NotSolved
30.06.2020 23:49:12 Gast69932
NotSolved
01.07.2020 15:53:06 Gast85995
NotSolved
01.07.2020 16:45:26 Gast64967
NotSolved
01.07.2020 17:14:01 Gast15071
NotSolved
01.07.2020 17:26:31 Gast83649
NotSolved
01.07.2020 17:38:50 Gast42607
NotSolved
01.07.2020 17:59:47 Gast34917
NotSolved