Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
392to396
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
392to396
392to396
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wie reaktiviere ich eine UserForm?

Wie reaktiviere ich eine UserForm?
05.03.2004 09:09:39
Alfred
Gibt es eine einfache Methode der Art Activate, mit der ich eine UserForm wieder aktiv machen kann, die während eines Makros inaktiv wurde?
Bitte beachten:
Die UserForm ist weder mit frm.Hide ausgeblendet noch mit frm.unload aus dem Speicher geschmissen. Während das Makro lief, wurde nur einfach das Excel-Sheet aktiv, die UserForm steht immer noch im Vordergrund, aber mit grauer Titelleiste für "nicht aktives Fenster".
Ich suche nicht Dialog.Hide ... Dialog.Show!
Auch SendKeys "%{TAB}" mit oder ohne Warten löst das Problem nicht.
Mehr zum Hintergrund und zu vergeblichen Lösungsansätzen unter
https://www.herber.de/forum/archiv/388to392/t391301.htm

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

Betreff
Datum
Anwender
Anzeige
AW: Wie reaktiviere ich eine UserForm?
05.03.2004 09:16:14
harry
hi alfred,
versuchs mit userform.setfocus
liebe grüße,
harry
AW: Wie reaktiviere ich eine UserForm?
05.03.2004 10:45:13
Alfred
War damals mein erster Gedanke, UserForms haben diese Methode (in Off97) aber offenbar nit.
AW: Wie reaktiviere ich eine UserForm?
05.03.2004 09:17:59
Franz W.
Hallo Alfred,
warum NICHT "Dialog.Show", "evtl. Dialog.Show: DoEvents" ?? Bringt's das wirklich nicht?
Grüße
Franz
AW: Wie reaktiviere ich eine UserForm?
05.03.2004 10:48:58
Alfred
Weiiiil Dialog schon geshowt ist, siehe verlinkte Diskussion zuvor.
Und da hilft auch kein DoEvents nich.
AW: Wie reaktiviere ich eine UserForm?
05.03.2004 09:51:12
Dieter Klemke
Hallo Alfred,
ich schlage dir eine API-Lösung vor.
Du hältst dir in der UserForm_Activate-Prozedur den Windows-Handle deiner UserForm fest und setzt mit seiner Hilfe deine UserForm im gewünschten Moment wieder in den Vordergrund.
Hier der Code zum Klassenmodul der UserForm:
Public hwnd As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function SetForegroundWindow Lib "user32" ( _
ByVal hwnd As Long) As Long

Private Sub btnDrucken_Click()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(1)
ws.PrintOut
SetForegroundWindow hwnd
End Sub


Private Sub btnSchließen_Click()
Me.Hide
End Sub


Private Sub UserForm_Activate()
hwnd = FindWindow(vbNullString, Me.Caption)
End Sub

MfG
Dieter
Anzeige
AW: Wie reaktiviere ich eine UserForm?
05.03.2004 11:11:12
ALfred
Oh, vielmals dankeschön, Dieter!
Genau das geht, habs soeben probiert.
Eine Frage hätt ich noch, die interessant werden könnte:
Da ich derzeit davon ausgehen muß, daß mehrere derartiger Workbooks gleichzeitig geöffnet sind, ist es ja zumindest denkbar, daß auch mehrere UserForms verschiedener Workbooks gleichzeitig offen sind.
Funkt Dein Algorithmus dann noch oder sollte ich mir Gedanken machen, die UserForms systemweit eindeutig zu betiteln?
AW: Wie reaktiviere ich eine UserForm?
05.03.2004 11:50:58
Dieter Klemke
Hallo Alfred,
FindWindow sucht wohl nur anhand der Fenster-Überschrift.
Um da eindeutiger zu sein, könntest du z.B. die folgende Initialize-Prozedur verwenden:

Private Sub UserForm_Initialize()
Me.Caption = Me.Caption & Format$(Time, "  hh:mm:ss")
End Sub

MfG
Dieter
Anzeige
AW: Wie reaktiviere ich eine UserForm?
05.03.2004 12:12:29
Alfred
Ok, das hatte ich vermutet, was mich bezüglich meines Einfühlungsvermögens in API-Rufe dann doch etwas beruhigt ;-)
Ja, nun habe ich <jubel>endlich eine funktionierende Lösung</jubel>, dafür danke ich Dir noch einmal ganz herzlich, Dieter!
Tschau
Alfred
PS:
Sieht so eigentlich auch viel professioneller aus als ein einfaches uform.SetFocus - letztlich ganz gut, daß uns die VBA-Entwickler diese Trivialität erspart haben <VEG>

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige