Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Focus auf UserForm

Focus auf UserForm
30.05.2009 20:12:10
Martin
Hallo,
mit der Tastenkombination "Strg+F" (Application.OnKey "^f", "Suche_Starten") wird ein UserForm gestartet mit der Eigenschaft "ShowModal=False".
Mein Problem: Wenn ich im Tabellenblatt arbeite während das Userform geöffnet ist und erneut die Tastenkombination "Strg+F" betätige, wird das UserForm neu geladen.
Frage: Kann ich auch einfach den Focus auf das UserForm zurücksetzen, wenn es schon geladen ist? Mit "If UserForm1.Visible = True" kann ich ja abfragen, ob das UserForm schon geöffnet ist. Mir fehlt quasi nur der Befehl, um den Focus von der Tabelle zum UserForm zu setzen.
Für Vorschläge wäre ich sehr dankbar!
Viele Grüße
Martin
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Focus auf UserForm
30.05.2009 21:05:01
Nepumuk
Hallo Martin,
einfach so:
Public Sub test()
    AppActivate UserForm1.Caption, True
End Sub

Gruß
Nepumuk
Anzeige
Super, das klappt! Ich frage aber weiter...
30.05.2009 21:21:35
Martin
Hallo Nepumuk,
vielen Dank für Deine hilfreiche Antwort. Ich muss gleich eine Folgefrage stellen: Kann ich dabei den Focus auch direkt auf ein UserForm-Element setzen. In meinem Fall würde ich den Focus gerne auf ComboBox1 der UserForm setzen.
Viele Grüße
Martin
AW: Super, das klappt! Ich frage aber weiter...
30.05.2009 21:23:52
Raist10
Das klappt i.d.R. so:
UserForm1.ComboBox1.SetFocus
Gruß
Rainer
Anzeige
Das klappt leider nicht...
30.05.2009 21:33:25
Martin
Hallo Rainer,
auf die Idee bin ich natürlich auch schon gekommen, aber leider will das nicht funktionieren (Meine UserForm hat den Namen "Suchmaske"):

Sub Suche_Starten()
If ActiveWorkbook.Name = ThisWorkbook.Name Then
If Suchmaske.Visible = True Then
AppActivate Suchmaske.Caption, True
Suchmaske.ComboBox1.SetFocus
Else: Suchmaske.Show
End If
Else
Application.CommandBars.FindControl(ID:=1849).Execute
End If
End Sub


Viele Grüße
Martin

Anzeige
AW: Das klappt leider nicht...
30.05.2009 22:17:09
Josef
Hallo Martin,
.SetFocus ist manchmal ein wenug störrisch, gib vor der ComboBox1 einem anderen Steuerelement den Focus, dann klappt's
z. B.:
Sub showfrm()
  With UserForm1
    If .Visible Then
      AppActivate .Caption, True
      .TextBox1.SetFocus
      .ComboBox1.SetFocus
    End If
  End With
  
End Sub

Gruß Sepp

Anzeige
Guter Trick, nun ist alles bestens...
30.05.2009 22:40:52
Martin
Hallo Sepp,
vielen Dank für diesen Trick. Darauf wäre ich garantiert nicht gekommen, nun klappt es bestens!
Viele Grüße
Martin
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

UserForm Fokus in Excel VBA richtig setzen


Schritt-für-Schritt-Anleitung

  1. UserForm vorbereiten: Stelle sicher, dass dein UserForm einen Namen hat, beispielsweise Suchmaske.

  2. Keyboard Shortcut einrichten: Nutze die Application.OnKey Methode, um die Tastenkombination für das Öffnen des UserForms festzulegen:

    Application.OnKey "^f", "Suche_Starten"
  3. Focus setzen: In der Suche_Starten Subroutine überprüfe, ob das UserForm bereits sichtbar ist. Falls ja, setze den Fokus darauf:

    Sub Suche_Starten()
       If ActiveWorkbook.Name = ThisWorkbook.Name Then
           If Suchmaske.Visible = True Then
               AppActivate Suchmaske.Caption, True
               Suchmaske.ComboBox1.SetFocus ' Setzt den Fokus auf ComboBox1
           Else
               Suchmaske.Show ' UserForm anzeigen
           End If
       End If
    End Sub

Häufige Fehler und Lösungen

  • Fehler: SetFocus funktioniert nicht: Wenn SetFocus nicht funktioniert, versuche, den Fokus zuerst auf ein anderes Steuerelement zu setzen, bevor du auf dein Zielsteuerelement wechselst. Beispiel:

    With Suchmaske
      If .Visible Then
          AppActivate .Caption, True
          .TextBox1.SetFocus ' Zuerst auf TextBox setzen
          .ComboBox1.SetFocus ' Dann auf ComboBox
      End If
    End With
  • Fehler: UserForm wird nicht aktiviert: Überprüfe, ob der Name des UserForms und die Caption korrekt sind. Nutze AppActivate mit dem richtigen Caption-Namen.


Alternative Methoden

  • Verwendung von GotFocus: Du kannst auch die GotFocus-Ereignisprozedur verwenden, um beim Öffnen des UserForms sofort den Fokus auf ein bestimmtes Steuerelement zu setzen.

  • Ereignisse nutzen: Du kannst auch das UserForm_Activate-Ereignis verwenden, um den Fokus zu setzen, wenn das UserForm aktiviert wird.


Praktische Beispiele

Ein Beispiel für das Setzen des Fokus auf ein Steuerelement direkt nach dem Öffnen des UserForms:

Private Sub UserForm_Activate()
    Me.ComboBox1.SetFocus
End Sub

Ein weiteres Beispiel könnte die Verwendung von AppActivate sein, um sicherzustellen, dass das UserForm im Vordergrund bleibt:

Public Sub ShowUserForm()
    If Not Suchmaske.Visible Then
        Suchmaske.Show
    End If
    AppActivate Suchmaske.Caption
    Suchmaske.ComboBox1.SetFocus
End Sub

Tipps für Profis

  • Verwende On Error Resume Next: Um Fehler zu vermeiden, wenn ein Steuerelement nicht den Fokus setzen kann:

    On Error Resume Next
    Suchmaske.ComboBox1.SetFocus
    On Error GoTo 0 ' Fehlerbehandlung zurücksetzen
  • Testen in verschiedenen Excel-Versionen: Achte darauf, deine VBA-Methoden in verschiedenen Versionen von Excel zu testen, da die Funktionsweise von SetFocus variieren kann.


FAQ: Häufige Fragen

1. Kann ich den Fokus auf mehrere Steuerelemente gleichzeitig setzen?
Nein, der Fokus kann immer nur auf ein einzelnes Steuerelement gesetzt werden. Du kannst jedoch den Fokus sequenziell auf verschiedene Steuerelemente setzen.

2. Warum funktioniert AppActivate manchmal nicht?
AppActivate funktioniert nur, wenn das UserForm sichtbar ist und der Name in der Caption exakt übereinstimmt. Überprüfe auch, ob das UserForm im Vordergrund ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige