UserForm m. ShowModal=false (v.Heiko)

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: UserForm m. ShowModal=false (v.Heiko) von: michael
Geschrieben am: 20.02.2005 15:06:11

Hallo Heiko oder jeder der mir helfen möchte,

das Macro funktioniert mit ShowModal Eigenschaft des Userforms auf False, wenn der 1.Teil in der Tabelle oder einem Modul steht jedoch muß der 2. Teil (nach weiter) in der UserForm stehen.

Ich bräuchte es aber so, daß der 1. Teil im Modul, dann Userform abfrage, weiter im Modul (ich krieg den 2. Teil nicht so in die UserForm dass er läuft). Jedoch muß die Tabelle während der Userform scrollbar bleiben (wg Kontrolle ob alles i.O. - geht wohl nur wenn ShowModal = false) jedoch gehts anschließend nicht zurück ins Modul.

Ich habe etwas gespielt und rausgefunden:
ShowModal = True: Macro springt zurück ins Modul - Tabelle nicht scrollbar
ShowModal = False: Macro springt nicht zurück ins Modul bzw bleibt im Modul - Tabelle scrollbar

Was mach ich falsch? Ich kapiers leider nicht..

https://www.herber.de/bbs/user/18378.xls


Danke für jede (Nach-)hilfe

Michael

Bild


Betrifft: AW: UserForm m. ShowModal=false (v.Heiko) von: Heiko S.
Geschrieben am: 20.02.2005 20:02:44

Hallo Michael,

hab dir mal zwei weitere Versionen in die Mappe gepackt.
https://www.herber.de/bbs/user/18394.xls

Wenn irgendwie möglich nutze die Version mit erster und zweiter Teil, die ZweiteMöglichkeit bremst wegen der darin enthaltenden Schleife ziemlich den Rechner aus.

Gruß Heiko

PS: Rückmeldung nicht vergessen !!!


Bild


Betrifft: AW: UserForm m. ShowModal=false (v.Heiko) von: michael
Geschrieben am: 20.02.2005 23:53:36

Hallo Heiko,
vielen Dank für deine Hilfe!! und Respekt! was du da an Macros schreibst...

Public weiter As Boolean
dieses weiter wurde in der 1.Vesion nicht benutzt (zumindest hab ichs nicht gefunden) wurde aber als Variable definiert. Warum musste es definiert werden?

was macht diese Schleife, wie oft wird sie durchlaufen?
Do
DoEvents
Loop Until weiter = True

Ich habs mit F8 (inEinzelschritten) versucht nachzuvollziehen, jedoch kommt der Ablauf nicht aus der Loop heraus.

Liegt die Aufwändigkeit nur am ShowModal=false ?
Soweit ich es feststellen konnte müssen Teil 1 und 2 in 2 verschiedenen Bereichen stehen (egal ob 2 Module, 1 Modul u. 1 UserForm) da sonst Teil 1 und 2 hintereinander weg abgearbeitet werden (die Antwort der UserForm oder die gesamte UserForm wird ignoriert). Warum passiert das?
In der zweiten Version hast du diese Trennung wohl über die Loop erreicht? Du schreibst sie bremst den Rechner aus - ich vermute die Loop wird solange durchlaufen bis ich einen Button der UserForm drücke - hat dann Funktion einer Pause fürs MAcro? - und deshalb das Ausbremsen des Rechners.

Kann man nicht anders eine Trennung zw. Teil 1 und teil 2 erreichen und beide in einem Modul lassen?
Warum geht kein If weiter = True Then?
oder ein GoTo eine Sprungmarke zw. Userform und Teil2

Danke und Gruß

Michael


Bild


Betrifft: AW: UserForm m. ShowModal=false (v.Heiko) von: Heiko S.
Geschrieben am: 21.02.2005 07:54:35

Hallo Michael,

Public weiter As Boolean. Warum musste es definiert werden?
Weil man als anständiger Programmierer sowieso immer alle Variablen vorher definiert, und zweitens weil diese Variable in verschiedenen Modulen genutzt werden soll und darum als PUBLIC definiert sein muss.


was macht diese Schleife, wie oft wird sie durchlaufen?
Do
DoEvents
Loop Until weiter = True
Sie wird solange durchlaufen bis weiter = True ist, also der Button im Userform gedrückt wurde mit dem weiter auf True gesetzt wird. Wird das Userform über Abbrechen oder das x oben rechts geschlossen, wird die Schleife ebenfalls unterbrochen.
Zu DoEvents schau bitte in der VBA Hilfe nach, ohne hast du aber eine Endlosschleife.


Warum geht kein If weiter = True Then?
oder ein GoTo eine Sprungmarke zw. Userform und Teil2
If weiter = True ist eine einmalige Abfrage, entweder ist weiter = true dann macht es damit weiter oder aber weiter ist gleich False dann mach es nach der If Anweisung weiter.
Goto Marken sind nur innerhalb eines Subs oder Function erlaubt, damit kann man nicht in ein anderes Sub springen, außerdem sollten Goto Anweisungen (außer für Fehlerroutinen) vermieden werden.

Zu ShowModal schau auch mal in der VBA Hilfe nach.

Gruß Heiko



Bild


Betrifft: AW: UserForm m. ShowModal=false (v.Heiko) von: michael
Geschrieben am: 21.02.2005 13:25:44

Hallo Heiko,

danke für deine Antwort.

Zu ShowModal schau auch mal in der VBA Hilfe nach... Leider gibt es dieses Stichwort nicht in meiner Excel/MS VB Hilfe. Könntest du mir vielleicht die Antwort deiner VBA Hilfe beifügen?

Mir ist noch nicht klar warum sich die UserForm so unterschiedlich bei True zu False verhält. Vielleicht eröffnet sich mir die Antwort aus der Hilfe.

Danke Michael


Bild


Betrifft: AW: UserForm m. ShowModal=false (v.Heiko) von: Heiko S.
Geschrieben am: 21.02.2005 13:36:57

Hallo Michael, hier der Auszug aus der VBA Hilfe.

ShowModal-Eigenschaft


Legt fest, ob ein UserForm gebunden oder ungebunden angezeigt wird. Diese Eigenschaft ist zur Laufzeit schreibgeschützt.

Bemerkungen

Die Einstellungen für die ShowModal-Eigenschaft sind:

Einstellung Beschreibung
True (Voreinstellung) Das UserForm ist gebunden.
False Das UserForm ist ungebunden.



Bemerkungen

Wenn ein UserForm gebunden ist, sollte der Benutzer Informationen liefern oder das UserForm schließen, bevor irgendein Teil der Anwendung verwendet wird. Es wird kein nachfolgender Code ausgeführt, bis das UserForm verborgen oder entladen ist. Obwohl andere Formulare in der Anwendung deaktiviert werden, wenn ein UserForm angezeigt wird, geschieht dies nicht bei anderen Anwendungen.

Wenn das UserForm ungebunden ist, kann der Benutzer andere Formulare oder Fenster anzeigen, ohne das UserForm zu schließen.

Ungebundene Formulare werden nicht in der Taskleiste angezeigt und befinden sich nicht in der Aktivierreihenfolge des Fensters.

Anmerkung Wenn Sie versuchen, ein UserForm mit einer ShowModal-Eigenschaft in Microsoft Office 97 zu öffnen, erhalten Sie einen Laufzeitfehler, da Office 97 nur gebundene UserForms anzeigt. Office 97 ignoriert die ShowModal-Eigenschaft und zeigt das UserForm gebunden an.



Gruß Heiko

PS: Läuft dein Makro denn nun so wie du möchtest ?!


Bild


Betrifft: AW: UserForm m. ShowModal=false (v.Heiko) von: michael
Geschrieben am: 21.02.2005 13:49:25

Hallo Heiko,

danke für die Antwort-komisch warum steht in meiner Hilfe nichts??

An meinem Macro bin ich noch am basteln.... Muss mich wohl für die 2. Mglk. entscheiden (Loop) da ansonsten all meine im Teil 1 definierten Variablen im Teil 2 unbekannt sind. :-(

Danke Michael

P.S. Mir ist noch immer nicht klar warum sich die UserForm so unterschiedlich bei True zu False verhält - aber ich glaube ich werds halt so akzeptieren müssen


Bild


Betrifft: AW: UserForm m. ShowModal=false (v.Heiko) von: Heiko S.
Geschrieben am: 21.02.2005 16:03:53

Hallo Michael,

das mit den Variablen stimmt nicht ganz, wenn du die Variablen oben im Modul, vor dem ersten Sub als
Public intZaehler as Interger
Public strDateiname as String
.
.
.
definierst dann sind diese Variablen in ALLEN Subs und Modulen bekannt.


Gruß Heiko




Bild


Betrifft: Public Variable... von: michael
Geschrieben am: 21.02.2005 17:08:16

Hallo Heiko,

danke für die Antwort.

Gilt das auch für die Werte die im Teil 1 den Variablen zugeordnet wurde?

Danke Michael


Bild


Betrifft: AW: Public Variable... von: Heiko S.
Geschrieben am: 21.02.2005 18:24:27

Hallo Michael,

ja, gerade das ist ja der Trick mit den Public Variablen. Die Werte bleiben so lange in der Varaibalen erhalten bis die Mappe mit dem Modul geschlossen wird.

Aber Vorsicht, bei nächsten Aufruf deines Makros stehen in den Variabeln noch Werte vom letzten Durchlauf drin. Das kann z.B. bei if Abfragen zum Problem werden.
Keine Angst das ist nicht schlimm, aber man muss dann am Anfang vom Makro dafür Sorgen das die Variablen auf definierte Zustände gesetzt werden. Booelan z.B. auf False .


Gruß Heiko


Bild


Betrifft: ginge auch ein Stop? von: michael
Geschrieben am: 21.02.2005 16:15:52

Hallo Heiko,

sag mal könnte ich nicht auch ein Stop Befehl einbauen und dieses Stop per Abfrage wieder ausschalten?

Lässt sich ein durch Stop angehaltenes Macro nur aus dem VB-Editor heraus per PlayTaste oder F8 fortsetzen? Oder gibt es auch im Excel eine Möglichkeit der Fortsetzung des Macros?

Danke und Gruß
Michael


Bild


Betrifft: AW: ginge auch ein Stop? von: Heiko S.
Geschrieben am: 21.02.2005 16:24:23

Hallo Michael,

da muss ich leider mit den Schultern zucken. Ich habe noch nie mit dem STOP Befehl gearbeitet und kann dir darum keine Antwort auf die Frage geben.

Gruß Heiko


Bild


Betrifft: AW: UserForm m. ShowModal=false (v.Heiko) von: michael
Geschrieben am: 22.02.2005 08:52:01

Hallo Heiko,

Vielen DAnk für deine ausführliche Hilfe!!!

Michael
PS. Sag mal Heiko S. steht nicht zufällig für Sterner?


 Bild

Beiträge aus den Excel-Beispielen zum Thema "UserForm m. ShowModal=false (v.Heiko)"