Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

GoTo Sprungmarke ???

Forumthread: GoTo Sprungmarke ???

GoTo Sprungmarke ???
15.11.2003 18:54:20
helge
Hallo miteinander,
mit folgendem Problem schlage ich mich nun schon geraume zeit herum:

On Error GoTo sprungmarke
...

sprungmarke: MsgBox("falsch gewählt: nochmal")
Resume sprungmarke1

ich habe eine fehlerbehandlung im modul 2 wo oben genanntes drinsteht.
nun möchte ich die MsgBox anzeigen lassen und dann zur sprungmarke1 wechseln welche sich im modul 1 befindet. alle module sind aber im selben workbook?
geht das eigentlich auch workbook übergreifend???

Problem: wie muss ich sprungmarke1 definieren als Public? geht nicht
auch GoTo sprungmarke1 geht nicht
das ganze soll alles mit vba gelöst werden um dass hier noch mit einzufügen

danke schonmal
helge
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: GoTo Sprungmarke ???
15.11.2003 19:11:14
Hans W. Hofmann
Aus der OH:

GoTo-Anweisung

Verzweigt ohne Bedingung zu einer bestimmten Zeile innerhalb einer Prozedur.

und weiter. Welche Lösung außerhalb VBA schwebt Dir denn vor?

Gruß HW
AW: GoTo Sprungmarke ???
15.11.2003 19:24:43
helge
hallo hans,
ja vba schwebt mir vor nichts anderes,
ich versteh jetzt nicht ganz die frage von dir
problem: ich führe in modul1 ein makro aus welches Application.Run
von dem modul 2 beinhaltet.
nun führe ich in modul 2 ein makro auf was On Error beinhaltet
wenn dort ein fehler auftritt will ich zu modul 1 (vielleicht GoTo sprungmarke1)
wechseln und dann dass makro mit einer anderen eingabe in einer MsgBox wieder starten.
das ist mein anliegen, ich hoffe es ist jetzt klarer.
danke helge
Anzeige
AW: GoTo Sprungmarke ???
15.11.2003 19:31:37
Michael
hi,
ist der abzufangende "fehler" tatsächlich ein excel-error oder gefällt dir bloß das ergebnis nicht ?
im zweiten fall müsstest du die variable abfragen und dann verzweigen (aber bitte nicht mit "goto" *schüttel* ;-)

cu Michael
AW: GoTo Sprungmarke ???
15.11.2003 19:36:03
Hans W. Hofmann
Was für VBA gilt hab ich Dir ja herausgesucht,
Du müsstest es halt nur lesen ;-)...

Gruß HW
Anzeige
das mit GoTo funktioniert aber nicht o.T.
15.11.2003 19:39:16
helge
AW: GoTo Sprungmarke ???
15.11.2003 19:36:30
helge
hi michael
es geht um Cells.Find
und das ist ein Excelfehler da er bestimmte arrayinhalte nicht finden kann,
und die aber brauch um im makro weiter machen zu können

mfg helge
AW: GoTo Sprungmarke ???
15.11.2003 19:49:45
Michael
direkter auszug aus der excel-vba-hilfe
die schreiben die fehlerbehandlungsroutine direkt in die

Sub ?? ist mir auch neu
aber man kanns ja mal probieren
zur not ruft man von dort seine eigene routine auf ;-)
cu Michael

Sub InitialisiereMatrix(Var1, Var2, Var3, Var4)
On Error GoTo ErrorHandler
Exit Sub
ErrorHandler:
Resume Next
End Sub

Anzeige
geht leider nicht o.T.
15.11.2003 20:04:11
helge
AW: geht leider nicht o.T.
15.11.2003 20:18:49
GerdW
On Error Goto sowieso funktioniert n u r innerhalb der selben
Prozedur!

Gerd
gibt es eine andere lösung für mein problem? o.T.
15.11.2003 21:01:04
helge
Anzeige
;
Anzeige

Infobox / Tutorial

GoTo Sprungmarke in Excel VBA nutzen


Schritt-für-Schritt-Anleitung

Um eine Sprungmarke in Excel VBA zu nutzen, kannst du folgende Schritte befolgen:

  1. Definiere eine Subroutine: Erstelle eine Subroutine, in der du die GoTo-Anweisung verwenden möchtest.

    Sub BeispielMakro()
       On Error GoTo Fehlerbehandlung
       ' Dein Code hier
    
       Exit Sub
    Fehlerbehandlung:
       MsgBox "Ein Fehler ist aufgetreten!"
       Resume
    End Sub
  2. Fehlerbehandlung einfügen: Füge die On Error-Anweisung hinzu. Diese sorgt dafür, dass bei einem Fehler die Ausführung zur definierten Sprungmarke springt.

  3. Sprungmarke definieren: Du kannst eine Sprungmarke innerhalb derselben Prozedur definieren, aber nicht über verschiedene Module hinweg. Das bedeutet, dass die Sprungmarke sprungmarke1 in Modul 1 nicht direkt von Modul 2 angesprungen werden kann.

  4. Verwendung von Resume: Nach der Anzeige einer MsgBox kannst du mit Resume die Ausführung entweder an der Stelle fortsetzen, wo der Fehler aufgetreten ist, oder eine neue Eingabe anfordern.


Häufige Fehler und Lösungen

  • Fehler: GoTo-Anweisung funktioniert nicht über Module hinweg: Du kannst keine Sprungmarke von einem Modul zu einem anderen ansteuern. Achte darauf, dass du deine Fehlerbehandlungslogik innerhalb des gleichen Moduls hältst.

  • Fehler: Sprungmarke nicht definiert: Stelle sicher, dass die Sprungmarke korrekt innerhalb der Subroutine definiert ist. Beispiel:

    Sub Beispiel()
       On Error GoTo Fehler
       ' Code hier
       Exit Sub
    Fehler:
       MsgBox "Fehler aufgetreten!"
       Resume
    End Sub

Alternative Methoden

Falls du die Verwendung von GoTo vermeiden möchtest, kannst du folgende Alternativen in Betracht ziehen:

  • If-Anweisungen: Überprüfe Bedingungen, bevor du einen bestimmten Code ausführst.

    If Bedingung Then
       ' Code ausführen
    Else
       MsgBox "Bedingung nicht erfüllt!"
    End If
  • Fehlerbehandlungsroutinen: Erstelle separate Fehlerbehandlungsroutinen, die du bei Bedarf aufrufst.


Praktische Beispiele

Hier ist ein Beispiel, wie du eine Sprungmarke in einer Fehlerroutine verwenden kannst:

Sub FehlerbehandlungBeispiel()
    On Error GoTo Fehlerhandler
    ' Simuliere einen Fehler
    Dim x As Integer
    x = 1 / 0 ' Division durch Null
    Exit Sub

Fehlerhandler:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
    Resume Next ' Fortfahren mit dem nächsten Befehl
End Sub

In diesem Beispiel wird bei einem Fehler eine Nachricht angezeigt, und das Makro setzt die Ausführung nach dem Fehler fort.


Tipps für Profis

  • Verwende Public für gemeinsame Variablen: Wenn du Variablen in mehreren Modulen teilen möchtest, definiere sie als Public.

  • Vermeide übermäßigen Gebrauch von GoTo: Obwohl GoTo nützlich sein kann, ist es oft besser, strukturierten Code mit Funktionen und Modulen zu schreiben, um die Lesbarkeit zu erhöhen.

  • Dokumentiere deinen Code: Nutze Kommentare, um die Funktionsweise deiner Sprungmarken und Fehlerbehandlungen zu erläutern.


FAQ: Häufige Fragen

1. Kann ich GoTo-Anweisungen in verschiedenen Modulen verwenden?
Nein, GoTo-Anweisungen können nur innerhalb derselben Prozedur verwendet werden.

2. Was passiert, wenn ich einen Fehler nicht behandele?
Wenn du einen Fehler nicht behandelst, wird das Makro an der Stelle, wo der Fehler auftritt, abgebrochen und das Programm gibt eine Fehlermeldung aus.

3. Wie setze ich eine Sprungmarke in VBA?
Eine Sprungmarke wird einfach durch einen Label-Namen gefolgt von einem Doppelpunkt definiert, z.B. sprungmarke1:.

4. Ist es ratsam, GoTo häufig zu verwenden?
Es wird empfohlen, GoTo sparsam zu verwenden, um die Lesbarkeit und Wartbarkeit des Codes zu verbessern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige