Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
820to824
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
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Verzweigung außerhalb umgebener Prozedur @Erich

Verzweigung außerhalb umgebener Prozedur @Erich
17.11.2006 07:08:29
Mathias
Hallo Erich,
also Makro wird über Schaltfläche in Tabellenblatt gestartet,
Name

Sub Tränkerei()
End Sub

ist ein Programm um die Bedingungen für eine Berechnung einzustellen.
d.h. wie viel Wicklungen im Motor, Motorbaugröße (davon hängt die spätere Dimensionierung des Stromes ab), Anzahl Drähte, Durchmesser etc.
gesartet wird mit Userform1 wenn ok gedrückt dann userform2 dann userform3
darin enthalten mehrere Optionsfelder. die fest vorgegeben sind und je nach Typvorgabe anzuklicken sind
diesen will ich dann noch einen Rückgabewert übergeben wie ich auch noch nicht weiß wie?
aus diesen Rückgabewert dann Bedingungen um weiter zu gehen
wenn Rückgabewert1 und R.W.2 etc. dann Formel ...
Userformen über .Show angezeigt damit auch auf zweite und dritte - also wenn ich über unload.me gehe dann sind die vorherigen userformen noch sichtbar.
Kann die Mappe leider nicht hochladen, weil auf Laptop (privat) und ich hier auf rechner (arbeit) schreibe an dem ich nix anschliessen kann.
ich will praktisch nachdem ich alle drei userformen aufgerufen habe und die optionen bestätigt sind mit oben genannten rückgabewert versehen und anschließend zu

Sub Tränkerei zurückschalten.
wie Übergabe Rückgabewert?
Also wenn ich Userform3  mit "ok" verlasse dann Programm weiter
mit "zurück" (über Unload.me) zur vorherigen Userform gehe (evtl. für korrekturmaßnahmen)
mit "Abbrechen"  zu 

Sub Tränkerei gehen
hier bin ich aber im 

Sub CommandButton ("Abbrechen")
Wie kann ich innerhalb dieser Prozedur
das 

Sub Tränkerei   beenden?  Über  Exit 

Sub Tränkerei?  Geht nicht so einfach wie dachte.
hoffe es reicht so
best regards
Matze

		

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verzweigung außerhalb umgebener Prozedur @Eri
17.11.2006 08:02:12
Erich
Hallo Mathias,
lies doch bitte noch mal
https://www.herber.de/forum/messages/820578.html
oder später im Archiv
https://www.herber.de/forum/archiv/820to824/t820464.htm#820578
Auf meine Antwort in
https://www.herber.de/forum/archiv/820to824/t820287.htm#820580
hast du ja leider nicht reagiert...
WARUM JETZT SCHON WIEDER EIN NEUER THREAD?
Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Verzweigung außerhalb umgebener Prozedur @Eri
17.11.2006 12:29:47
Mathias
hatte gedacht nen extra THREAD zu schreiben damit dieser schneller ersichtlich ist,
werd mich jetzt auf diesen (letzten zu diesem Thema) beschränken.
also mit "End" oder "Exit Sub" (habe ich getestet geht nicht)
wird doch nur die umgebene Prozedur beendet. also Sub CommandButton ()
oder sehe ich das falsch?
ich will aber wie schon gesagt von dem CommandButton (Abbrechen) der 3.Userform die
Prozedur Sub Tränkerei ()
Userform1.Show
...
End Sub
beenden.
mit

Private Sub CommandButton () 'Abbrechen
'und hier dann mit Bedingung wenn Abbrechen gedrückt Exit Sub Tränkerei
End Sub

Anzeige
AW: Verzweigung außerhalb umgebener Prozedur @Eri
17.11.2006 13:20:27
fcs
Hallo Mathias,
ich denke hier ist ein geordneter Rückzug aus den aktiven Prozeduren der bessere Weg. So kannst du auch wesentlich besser steuern was denn so auf dem Rückweg passieren soll
Deklariere in einem allgemeinen Modul eine boolsche Variable als Public, die bei Wert True die weitere Code-Ausführung abbrechen soll.
Bsp:
Public AbbrechenTraenkerei as Boolean
Nach jedem Aufruf eines Userforms mit Show in einer Prozedur fügst du eine Zeile ein, die prüft, ob die Abbrechen-Variable den Wert True hat, falls ja, dann Sub verlassen.
Bsp.:
...
Userform1.Show
If AbbrechenTraenkerei = True Then Exit Sub
...
Die Abbrechen-Prozedur in den Einzelnen Userforms schaut dann etwa so aus:

Private Sub CommandButton () 'Abbrechen
AbbrechenTraenkerei = True
Unload Me
End Sub

Gruß
Franz
Anzeige
AW: Verzweigung außerhalb umgebener Prozedur @Eri
20.11.2006 07:22:15
Mathias
Hallo Franz,
habe dein Vorschlag mal ausprobiert,
allerdings bekomm ich dann eine Fehlermeldung:
Public AbbrechenTraenkerei as Boolean dass "Public" ein Ungültiges Attribut in Sub.bzw. Function ist
was kann ich tun?
AW: Verzweigung außerhalb umgebener Prozedur @Eri
20.11.2006 07:35:05
Mathias
upps mein Fehler,
nehme alles zurück
hatte Private AbbrechenTraenkerei As Boolean in Sub Traenkerei () eingebaut,
klappt alles.
danke
AW: Verzweigung außerhalb umgebener Prozedur @Eri
20.11.2006 09:51:19
Mathias
alles Retour, war etwas zu voreilig
habe mal nach If AbbrechenTraenkerei = True Then Exit Sub
ne MsgBox eingefügt, um zu sehen, ob der Abbruch erfolgt, ist aber negativ
Woran kann das liegen?
Anzeige
AW: Verzweigung außerhalb umgebener Prozedur @Eri
20.11.2006 19:45:15
fcs
Hallo Mathias,
Kleinigkeiten können ja manmal so nervend sein.
Ich hab es jetzt noch einmal komplett durchgespielt und hab dann festgestellt, dass ich eine Kleinigkeit übersehen hatte.
Wenn ein weiteres Userform von einem Userform aus aufgerufen wird, dann muss wenn Abgebrochen wird, auf dem Weg zur ursprünglich aufrufenden Prozedur auch jedes Formular beendet werden, also noch jeweils ein Unload Me eingebaut werden.
Außerdem muss man ggf. noch zwischen OK und Zurück unterscheiden.
Hier mal Beispielhaft die Prozeduren und die Datei zum Durchspielen der Möglichkeiten.
https://www.herber.de/bbs/user/38344.xls
Gruss
Franz

Im Modul die Prozedur, die das 1. Form aufruft
Option Explicit
Public FormTestenAbbrechen As Boolean, zurueck2 As Boolean, zurueck3 As Boolean
Sub FormsTesten()
FormTestenAbbrechen = False
'... Code
UserForm1.Show
If FormTestenAbbrechen = True Then
MsgBox "es wird abgebrochen"
Exit Sub
End If
MsgBox "Userforms wurden mit OK beendet"
'...Code
End Sub
Prozeduren für die 3 Buttons im Userform1:
Private Sub Button_Abrechen_Click()
FormTestenAbbrechen = True
Unload Me
End Sub
Private Sub Button_OK_Click()
'Formular beenden und weitermachen
Me.Hide
End Sub
Private Sub Button_Userform2_Click()
Userform2.Show
If FormTestenAbbrechen = True Then
Unload Me
Exit Sub
End If
If zurueck2 = True Then
MsgBox "Userform 2 mit zurück beendet"
Else
MsgBox "Userform 2 mit OK beendet"
Me.Hide
End If
End Sub
Die 4 Prozeduren im Userform2 :
Private Sub Button_Abrechen_Click()
FormTestenAbbrechen = True
Unload Me
End Sub
Private Sub Button_OK_Click()
'Formular beenden und weitermachen
Me.Hide
zurueck2 = False
End Sub
Private Sub Button_Userform3_Click()
Userform3.Show
If FormTestenAbbrechen = True Then
Unload Me
Exit Sub
End If
If zurueck3 = True Then
MsgBox "Userform 3 mit zurück beendet"
Else
MsgBox "Userform 3 mit OK beendet"
Me.Hide
End If
End Sub
Private Sub Button_Zurueck_Click()
'Zeigt Userform 1 wieder an
Unload Me 'oder auch Me.Hide
zurueck2 = True
UserForm1.Repaint
End Sub
Prozeduren im Userform3:
Private Sub Button_Abrechen_Click()
FormTestenAbbrechen = True
Unload Me
End Sub
Private Sub Button_OK_Click()
'Formular beenden und weitermachen
Me.Hide
zurueck3 = False
End Sub
Private Sub Button_Zurueck_Click()
'Zeigt Userform 2 wieder an
Unload Me 'Oder Me.Hide je nach dem ob die Daten des Userforms erhaltenbleiben sollen
zurueck3 = True
Userform2.Repaint
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige