HERBERS Excel-Forum - die Dialoge

Thema: Fokus auf UserForm setzen

Home
Nach dem Öffnen einer Datei über eine UserForm soll der Focus wieder auf die UserForm gesetzt werden. Fokus auf UserForm setzen
  • Arbeitsmappe öffnen
    • Prozedur: cmdSelectFile_Click
    • Art: Ereignis
    • Modul: Klassenmodul der UserForm
    • Zweck: Arbeitsmappe öffnen
    • Ablaufbeschreibung:
      • Variablendeklaration
      • Dateiauswahldialog aufrufen
      • Bei Abbruch Programm beenden
      • Ausgewählte Datei öffnen
      • API-Funktion zum Zurücksetzen des Focus auf die UserForm aufrufen und dabei den Wert der Funktion zur Ermittlung des UserForm-Fensters übergeben
    • Code:
      
      Private Sub cmdSelectFile_Click()
         Dim vFile As Variant
         vFile = Application.GetOpenFilename("Arbeitsmappe (*.xls), *.xls")
         If vFile = False Then Exit Sub
         Workbooks.Open vFile
         SetForegroundWindow GetHandle
      End Sub
      
  • Fenster der UserForm ermitteln
    • Prozedur: GetHandle
    • Art: Function
    • Modul: Klassenmodul der UserForm
    • Zweck: Fenster der UserForm ermitteln
    • Ohne Ablaufbeschreibung
    • Code:

      
      Private Declare Function FindWindow Lib "user32.dll" _
         Alias "FindWindowA" (ByVal lpClassName As String, _
         ByVal lpWindowName As String) As Long
      Private Declare Function SetForegroundWindow Lib "user32" _
         (ByVal hwnd As Long) As Long
      
      
      Function GetHandle() As Long
         Dim sFormClassName As String
         If Application.Version < 9 Then
            sFormClassName = "ThunderXFrame"
         Else
            sFormClassName = "ThunderDFrame"
         End If
         GetHandle = FindWindow(sFormClassName, Me.Caption)
      End Function