Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1168to1172
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
Nur ausgeblendete UserForms wieder zeigen
Martin
Hallo liebe Excel-Könner,
ich habe nach längerer Zeit mal wieder eine Frage zu UserForms: Wie kann ich es erreichen, dass ausschließlich ausgeblendete UserForms wieder angezeigt werden?
Mein Ziel ist es, dass verwendete UserForms (mit der Eigenschaft ShowModal = False) beim Wechsel in eine andere Arbeitsmappe im Hintergrund geöffnet bleiben, aber nicht mehr sichtbar sind. Sobald wieder in der "richtigen" Arbeitsmappe weitergearbeitet wird, sollen die UserForms mit den bereits getätigten Eingaben wieder verfügbar sein.
Mein Ansatz (siehe unten) funktioniert nicht, da es eine Abfrage wie "If UserForm1.Hidden = True" nicht gibt.
Hat jemand eine Lösungsidee?
Viele Grüße
Martin
Private Sub Workbook_Deactivate()
If UserForm1.Visible = True Then UserForm1.Hide
If UserForm2.Visible = True Then UserForm2.Hide
If UserForm3.Visible = True Then UserForm3.Hide
If UserForm4.Visible = True Then UserForm4.Hide
If UserForm5.Visible = True Then UserForm5.Hide
End Sub
Private Sub Workbook_Activate()
If UserForm1.Hidden = True Then UserForm1.Show
If UserForm2.Hidden = True Then UserForm2.Show
If UserForm3.Hidden = True Then UserForm3.Show
If UserForm4.Hidden = True Then UserForm4.Show
If UserForm5.Hidden = True Then UserForm5.Show
End Sub

AW: Nur ausgeblendete UserForms wieder zeigen
24.07.2010 18:49:08
Hajo_Zi
Hallo Martin,
vielleicht ist dies ein Ansatz
Option Explicit
Private Sub Workbook_Deactivate()
UserForm1.Hide
End Sub
Private Sub Workbook_Activate()
UserForm1.Show
End Sub

AW: Nur ausgeblendete UserForms wieder zeigen
24.07.2010 18:51:16
Tino
Hallo,
mach es so.
'...
If Not UserForm1.Visible Then UserForm1.Show
If Not UserForm2.Visible Then UserForm2.Show
If Not UserForm3.Visible Then UserForm3.Show
If Not UserForm4.Visible Then UserForm4.Show
If Not UserForm5.Visible Then UserForm5.Show
'...
Beachte das eventuell das Ereignis UserForm_Activate ausgelöst wird wenn vorhanden.
Gruß Tino
Anzeige
da gibt es ein Problem,...
24.07.2010 19:03:38
Tino
Hallo,
Deine Userformen müssen mit Modal False geöffnet werden sonst bleibt Dein Code hängen.
Zur Laufzeit lässt sich diese Eigenschaft nicht ändern!
Gruß Tino
leider klappt es nicht wie gewünscht...
24.07.2010 21:06:29
Martin
Hallo Tino, hallo Hajo,
vielen lieben Dank für Eure Antworten. Leider besteht weiterhin das Problem, dass die UserForms immer geöffnet werden - also auch dann, wenn diese vor dem Verlassen der Arbeitsmappe überhaupt nicht offen waren.
Ich habe in meiner Fragestellung das Problem sicherlich nicht verständlich genug formuliert, entschuldigung. Die UserForms sollen also nur bei Rückkehr zur Arbeitsmappe wieder eingeblendet werden, wenn sie bereits geöffnet sind. Darum suche ich eine Abfragemöglichkeit wie "If UserForm1.Hidden = True Then UserForm1.Show".
Gibt es überhaupt eine Möglichkeit abzufragen, ob ausgeblendete UserForms geöffnet sind?
Viele Grüße
Martin
Anzeige
AW: leider klappt es nicht wie gewünscht...
24.07.2010 21:15:29
Hajo_Zi
Hallo Martin,
benutze doch eine Variable dazu ob Userform gestartet.
Gruß Hajo
AW: Hajo hat recht, neues Beispiel...
24.07.2010 22:59:15
Nepumuk
Hallo Tino,
warum nicht das Userforms-Objekt dazu benutzen? Da sind alle geladenen drin.
Gruß
Nepumuk
Anzeige
wie meinst Du
24.07.2010 23:27:40
Tino
Hallo Nepumuk,
bei mir sind alle Userformen drin sobald ich eine lade (Item 1, 2 und 3)?!
Gruß Tino
AW: wie meinst Du
24.07.2010 23:43:24
Nepumuk
Hallo Tino,
und sobald sie mit Unload entladen oder über das Schließenkreuz geschlössen werden sind sind sie wieder drausen. Nur wenn sie mit Hide ausgeblendet werden sind sie noch drin. Wenn man natürlich hergeht und sie mit Load alle lädt sind sie natürlich auch alle drin. Aber wer macht das schon?
Gruß
Nepumuk
oder meinst Du so?
24.07.2010 23:39:22
Tino
Hallo,
so könnte ich es mir vorstellen.
Private Sub Workbook_Activate()
Dim i As Integer
For i = 0 To UserForms.Count - 1
If Not UserForms(i).Visible And UserForms(i).Tag = "1" Then
UserForms(i).Show
End If
Next i
End Sub
Private Sub Workbook_Deactivate()
Dim i As Integer
For i = 0 To UserForms.Count - 1
UserForms(i).Tag = "1": UserForms(i).Hide
Next i
End Sub
Gruß Tino
Anzeige
AW: oder meinst Du so?
24.07.2010 23:55:00
Nepumuk
Hallo Tino,
ne, eher so:
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_Activate()
    Dim objForm As Object
    For Each objForm In UserForms
        objForm.Show
    Next
End Sub

Private Sub Workbook_Deactivate()
    Dim objForm As Object
    For Each objForm In UserForms
        objForm.Hide
    Next
End Sub

Gruß
Nepumuk
Anzeige
ja ok. so gehts oT.
25.07.2010 00:02:30
Tino
Dankeschön an die Experten!
25.07.2010 00:17:19
Martin
Hallo Tino, Nepumuk & Hajo,
ich hätte nicht gedacht, dass meine Frage gleich drei Profis beschäftigen würde. Aber irgendwie bin ich beruhigt, dass das ganze scheinbar doch nicht so einfach war, wie es aussah.
In jedem Fall ein großes Dankeschön für Eure Hilfe!
Viele Grüße
Martin
nur 2 Experten und ich ein Hobbybastler ;-) oT.
25.07.2010 00:20:51
Tino

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige