Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Textboxe und Comboboxe prüfen
#11
Hallo Atilla,


das mit der Comboxen und Textboxe Prüfung funktioniert nun perfekt!

Zitat:ich sehe gerade, dass Hajo mit Deinem Case Else wieder Probleme bekommen hat.
Ohne Worte :97:

Ja, es war heute wirklich warm, aber das lag nicht daran, sondern ich bin momentan so vertieft in Excel, dass ich den Wald vor lauter Bäume nicht mehr sehe! :)

Dein Lösungsvorschlag für das Userformproblem funktioniert perfekt, solange eine der Userformen geöffnet ist beim verlassen der Datei! Schließe ich die Userform vorm Verlassen der Datei, dann kommt eine Fehlermeldung! Laufzeitfehler 91 Objektvariable oder WithBlockvariable nicht festgelegt! Und natürlich bei Rückkehr gibt es auch wieder einen Fehler!

Wie kann ich das abstellen, habe schon mit On Error GoTo 0 versucht, aber leider ohne Erfolg!


So habe jetzt das so gelöst: :)

Code:
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
    On Error GoTo Nimic
    aktiveForm.Show
Nimic:     Exit Sub
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
    On Error GoTo Nimic
    aktiveForm.Hide
Nimic:     Exit Sub
End Sub

DANKE NOCHMALS SEHR SEHR!!!

Vielen lieben Dank
LG
Alexandra

Code strukturiert dargestellt durch 3. Button von rechts im Beitragsformular: #
Moderator
[Bild: smilie.php?smile_ID=1810]
Antworten Top
#12
Hallo Alexandra,

wenn im Code nur die eine Zeile vorkommt, dann würde ich es so lösen:

Code:
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
   On Error Resume Next
   aktiveForm.Show
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
   On Error Resume Next
   aktiveForm.Hide
End Sub

Eine bessere Lösung fällt mir gerade nicht ein.
Gruß Atilla
Antworten Top
#13
Hallo Alexandra,

vor dem wieder Einschlafen ist mir doch eine saubere Lösung eingefallen Idea

Du musst hinter der Userform im Terminate Ereignis folgendes schreiben:

Code:
Private Sub UserForm_Terminate()
Set aktiveForm = Nothing
....

Und hinter ThisWorkbook dann so:

Code:
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
   If Not aktiveForm Is Nothing Then aktiveForm.Show
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
   If Not aktiveForm Is Nothing Then aktiveForm.Hide
End Sub
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • cysu11
Antworten Top
#14
Guten Morgen Atilla,


funktioniert natürlich perfekt! :)

Spricht irgendwas gegeben meine Lösung?



Vielen lieben Dank
LG
Alexandra
Antworten Top
#15
Hallo Alexandra,

Zitat:Spricht irgendwas gegeben meine Lösung?

Theoretisch nicht, aber wenn möglich sollte der Code nicht unbedingt mit Exit Sub abgewürgt werden.
Wie ich gezeigt habe, gibt es hier eine vernünftige Fehlerabfrage, dann sollte diese auch eingesetzt werden.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • cysu11
Antworten Top
#16
Hallo Atilla,


habe deine Codes erfolgreich eingesetzt und funktioniert ganz toll!
Nun habe ich mehrere Userforms in einer Datei und es funktioniert super!
Das einzige was mir nicht gefällt ist, dass wenn ich die Datei wechlse zwar alle offenen Userforms bei der Rückkehr noch offen sind allerdings tut sich meine "Hauptmenü" Userform imm als erste in Vordergrund obwohl diese nicht die letzte war die ich geöffnet hatte! mit allen anderen funktioniert es perfekt nur mit der einen nicht!

Hast du vielleicht eine Idee woran das liegen kann?

Danke
LG
Alexandra
Antworten Top
#17
Hallo nochmal,


hier der Code um den es geht!

Code:
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
    If Not aktiveForm Is Nothing Then aktiveForm.Show
    If Not aktiveForm2 Is Nothing Then aktiveForm2.Show
    If Not aktiveForm3 Is Nothing Then aktiveForm3.Show
    If Not aktiveForm4 Is Nothing Then aktiveForm4.Show
    If Not aktiveForm5 Is Nothing Then aktiveForm5.Show
    If Not aktiveForm6 Is Nothing Then aktiveForm6.Show
    If Not aktiveForm7 Is Nothing Then aktiveForm7.Show
    If Not aktiveForm8 Is Nothing Then aktiveForm8.Show
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
    If Not aktiveForm Is Nothing Then aktiveForm.Hide
    If Not aktiveForm2 Is Nothing Then aktiveForm2.Hide
    If Not aktiveForm3 Is Nothing Then aktiveForm3.Hide
    If Not aktiveForm4 Is Nothing Then aktiveForm4.Hide
    If Not aktiveForm5 Is Nothing Then aktiveForm5.Hide
    If Not aktiveForm6 Is Nothing Then aktiveForm6.Hide
    If Not aktiveForm7 Is Nothing Then aktiveForm7.Hide
    If Not aktiveForm8 Is Nothing Then aktiveForm8.Hide
End Sub

In jede Userform habe ich folgendes stehen:

Private Sub UserForm_Terminate()
Set aktiveForm6 = Nothing (natürlich mit der jeweiligen Zahl, hier ist es die 6)
End Sub

und bei Userform Initialize
Set aktiveForm6 = Me (natürlich mit der jeweiligen Zahl, hier ist es die 6)

und in ein Allgemein Modul:

Public aktiveForm6 As Object (natürlich mit der jeweiligen Zahl, hier ist es die 6)

Das Problem was ich vorhin beschrieben habe betraf die aktiveForm6, also egal welche Userform ich als letztes offen hatte vor dem Wechsel zu einer anderen Datei, bei der Rückkehr kam immer die aktiveForm6 in Vordergrund! Nun habe ich diese mal abgeschaltet jetzt passiert das ganze mit der aktiveForm5!

Woran liegt das hat da Excel eine bestimmte Reihenfolge? Huh


Vielen Dank im Voraus
VG
Alexandra
Antworten Top
#18
Hallo Alexandra,

tue mal einen Haltepunkt in deinem Makro setzen. Wie das geht kannst Du hier nachlesen. Gehe danach im Einzelschrittmodus (F8-Taste) durch den Code. Jetzt solltest Du sehen, wie Excel deinen Code abarbeitet und solltest vielleicht auch sehen, woran es liegt, das der Code nicht das macht, was Du willst.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#19
Hallo Steffl,



danke für den Tipp (wieder was gelernt!). Eigentlich logisch, der Code arbeitet genau die Reihenfolge ab wie die Userforms in Code vorkommen:

Code:
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
    If Not aktiveForm Is Nothing Then aktiveForm.Show
    If Not aktiveForm2 Is Nothing Then aktiveForm2.Show
    If Not aktiveForm3 Is Nothing Then aktiveForm3.Show
    If Not aktiveForm4 Is Nothing Then aktiveForm4.Show
    If Not aktiveForm5 Is Nothing Then aktiveForm5.Show
    If Not aktiveForm6 Is Nothing Then aktiveForm6.Show
    If Not aktiveForm7 Is Nothing Then aktiveForm7.Show
    If Not aktiveForm8 Is Nothing Then aktiveForm8.Show
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
    If Not aktiveForm Is Nothing Then aktiveForm.Hide
    If Not aktiveForm2 Is Nothing Then aktiveForm2.Hide
    If Not aktiveForm3 Is Nothing Then aktiveForm3.Hide
    If Not aktiveForm4 Is Nothing Then aktiveForm4.Hide
    If Not aktiveForm5 Is Nothing Then aktiveForm5.Hide
    If Not aktiveForm6 Is Nothing Then aktiveForm6.Hide
    If Not aktiveForm7 Is Nothing Then aktiveForm7.Hide
    If Not aktiveForm8 Is Nothing Then aktiveForm8.Hide
End Sub

Also ist mir jetzt, dank deinen Tipp klar, warum das passiert!

Kann ich das beeinflussen, dass die Reihenfolge genau so wieder dargestellt wird, wie ich die Userforms geöffnet habe?

Also z.B. ich öffne (mit Show) Userform3 und dann Userform1, das heißt Userform3 ist jetzt im Hintergrund und Userform1 im Vordergrund! Nun wechsle ich zu einer anderen Datei und bei der Rückkehr soll genauso wie beim Verlassen die Userform1 in Vordergrund und die Userform3 im Hintergrund sein!

Wie könnte ich das realisieren?

Für eure Mühe bedanke ich mich im Voraus
VG
Alexandra
Antworten Top
#20
Hallo Alexandra,

und die Userformen sind alle in einer Datei? Könntest Du vielleicht die Datei hier hochladen?
Gruß Stefan
Win 10 / Office 2016
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste