Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1368to1372
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

mittels GoTo mitten in ein anderes Makro springen

mittels GoTo mitten in ein anderes Makro springen
08.07.2014 12:33:50
Georg
Hallo Excel Welt,
ich hänge an einem einfachen GoTo Fehler, den ich aber auch in der Recherche nicht gelöst bekommen habe... :-(
Könnt ihr mir sagen, warum das nicht klappt, bzw. wie es klappen würde?
Ich will von "test1" in die Mitte (!) von "test2" springen. Das stelle ich mir so vor:
Sub test1()
GoTo SPRUNG_MARKE
End Sub

_____________________
Sub test2()
SPRUNG_MARKE:
End Sub
Es kommt dann die Fehlermeldung: "Sprungmarke nicht definiert". Wenn ich sie aber in "test1" definiere, springt er aber natürlich nicht in "Test2"!
?
Ist doch sicher wieder eine banale Sache, aber ich krieg es nicht gebacken...!
Danke und Gruß Georg

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

Betreff
Datum
Anwender
Anzeige
AW: mittels GoTo mitten in ein anderes Makro springen
08.07.2014 12:49:50
Daniel
Hi
eigentlich sollte man dir da gar nicht helfen, denn das was du da produzierst ist unübersichlicher, fehleranfälliger Spaghetti-Code im Quadrad.
sowas macht man eigentlich schon seit ende er 70er nicht mehr.
aber wenn du es brauchst:
Sub test1()
Call test2(1)
End Sub
Sub test2(Optional Sprungmarke as long = 0)
If Sprungmarke = 1 then Goto SPRUNG_MARKE
SPRUNG_MARKE:
End Sub
Gruß Daniel

AW: mittels GoTo mitten in ein anderes Makro springen
08.07.2014 14:07:30
Georg
Hallo Daniel,
danke für die Hilfe und Hinweise!! Ich hab noch Fragen:
- was ist denn "Spagetti Code"? Das hatte ich auch woanders schon gelesen und nicht verstanden.
- Und was bedeuted die 1 in Klammern beim Makroaufruf?
- Wie sollte ich sowas besser machen?
Danke für die Nachhilfe!
Gruß Georg

Anzeige
AW: mittels GoTo mitten in ein anderes Makro springen
08.07.2014 14:17:06
Daniel
Spagetthicode ist Code, der viele Gotos enthält und bei dem zwischen den Sprungmarken hin und her gesprungen wird, so dass man schnell die Übersicht verliert wo man sich gerade befindet. Wenn man versucht dem Pogrammlauf zu folgen, dann ist das keine lineare Abfolge des Codes, sondern wildes durcheinander wie auf einem Teller Spaghetti.
ich brauche die 1, weil ich nicht direkt zu einer Sprungmarke in einem anderen Makro springen kann.
ich kann nur das Makro nurmal aufrufen.
Damit der erste Teil übersprungen werden kann, mache ich eine Parameterübergabe.
Wenn der übergebene Parameter den Wert 1 hat, wird zur Sprungmarke gesprungen, falls nicht, wird das Makro normal abgearbeitet.
ohne jetzt deine Aufgabenstellung zu kennen, ist es natürlich schwer zu sagen, was konkret besser ist.
wenn du schon modular programmierst (dh auf mehrere Makros verteilt), dann könnte das auch so aussehen:
Sub Makro1()
Call Makro2b
End sub
Sub Makro2a()
'hier wäre die Sprungmarke
Call Makro2b
End Sub
Sub Makro2B()
'hier der Code ab der Sprungmarke
End Sub
Gruß Daniel

Anzeige
klasse
08.07.2014 14:40:11
Georg
Hi Daniel,
danke für die gute Erklärung. Hab wieder was gelernt!
Gruß Georg

doch noch was...
08.07.2014 14:48:34
Georg
Hallo Daniel,
jetzt hab ich doch noch ein Problem.
Das Makro "test2" läuft nicht mehr allein! Ich kann "test1" starten und dann auf "test2" springen, aber "test2" kann ich nicht allein starten!! ?

AW: doch noch was...
08.07.2014 15:28:38
Daniel
dann noch dieses Makro einfügen:
Sub Test2start
Call Text2(0)
End Sub
zum Direktstart dann Test2start verwenden
alternativ kannst du auch statt der Parameterübergabe eine Projektweit gültige Variable verwenden, welche in allen Makros verwendet werden kann und ihren Wert behält:
Option Explicit
Public SprungMarke as long
Sub test1()
SprungMarke = 1
Call test2
End Sub
Sub test2()
If Sprungmarke = 1 then
Sprungmarke = 0
Goto SPRUNG_MARKE
end if
SPRUNG_MARKE:
End Sub

hier kannst du Test2 dann weiterhin normal starten, solltest dir aber immer im klaren darüber sein, welchen Wert deine Variable "Sprungmarke" aktuell hat, denn die behält ihren zuletzt vergebenen Wert auch nach Ablauf der Makros.
Gruß Daniel

Anzeige
jetzt funzts...Danke!! - owt
08.07.2014 15:41:17
Georg
:-)

15 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige