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

Forumthread: Focus auf Command Button

Focus auf Command Button
22.12.2016 13:14:23
Gunter
Hallo Zusammen
Auf einem Blatt habe ich einen Button, mit dem eine UF aufgerufen wird. Die UF wird nach Eingabe der Werte mit Me.Hide versteckt. Nachdem die UF verschwunden ist soll der aufrufende Command Button den Focus wieder erhalten, damit man durch ein weiteres "Enter" die UF gleich nochmals aufrufen kann.
Für zweckdienliche Hinweise herzlichen Dank.
Gruss
Gunter
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Focus auf Command Button
22.12.2016 13:31:08
Bertram
Hallo Gunter,
der Commandbutton hat schon den Fokus. Benutze das CommandButton1_KeyDown-Event.
Gruß
Bertram
AW: Focus auf Command Button
22.12.2016 13:42:33
Gunter
Hallo Bertram
Vielen Dank für deine Antwort. Wie muss ich das CommandButton1_KeyDown-Event verwenden? Wenn ich damit die UF öffnen will passiert nichts. Sorry ich bin Anfänger.
Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As  _
Integer)
KW.Show
End Sub
Gruss
Gunter
Anzeige
AW: Focus auf Command Button
22.12.2016 13:46:30
Bertram
Hallo Gunter,
genau wie du geschrieben hast. Das Click-Ereignis bleibt natürlich auch.
Heißt dein Button auch "CommandButton1"?
AW: Focus auf Command Button
22.12.2016 13:50:49
Gunter
Also der Button heisst in der Tabelle im Entwurfsmodus:
=EINBETTEN("Forms.CommandButton.1";"")
Und diesen Code hab ich jetzt:
Private Sub CommandButton1_Click()
KW.Show
End Sub
Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As  _
Integer)
KW.Show
End Sub
Was mach ich falsch?
Anzeige
AW: Focus auf Command Button
22.12.2016 13:56:33
Bertram
Hallo Gunter,
füge am Ende deines UF-Makros noch diese Zeile ein:
Tabelle1.CommandButton1.Activate
(Tabelle1 = Deine Tabelle mit dem CommandButton1)
Gruß
Bertram
AW: Focus auf Command Button
22.12.2016 14:05:36
Gunter
Ich weiss nicht was ich falsch mache ich krieg das nicht hin. Mittlerweile hab ich an allen möglichen Stellen ein Worksheets("Donnerstag").CommandButton1.Activate eingefügt, aber es tut sich nichts. Hier mal der Code für die UF
Private Sub TextBox1_AfterUpdate()
Dim i As Integer
Worksheets("Hilfe").Range("H18") = TextBox1.Value
'For i = 1 To 7
'If Sheets("Hilfe").Range("H" & i) > Sheets("Hilfe").Range("H19") Then
'Sheets("Hilfe").Range("H19") = Sheets("Hilfe").Range("H" & i)
'End If
Worksheets("Donnerstag").CommandButton1.Activate
Me.Hide
Worksheets("Donnerstag").CommandButton1.Activate
End Sub
Private Sub TextBox2_AfterUpdate()
Worksheets("Hilfe").Range("H19") = TextBox2.Value
Worksheets("Donnerstag").CommandButton1.Activate
Me.Hide
Worksheets("Donnerstag").CommandButton1.Activate
End Sub
Private Sub UserForm_Activate()
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End Sub
Private Sub UserForm_Initialize()
TextBox1.Value = Worksheets("Hilfe").Range("H18")
TextBox2.Value = Worksheets("Hilfe").Range("H19")
End Sub

Anzeige
AW: Focus auf Command Button
22.12.2016 14:20:25
Bertram
Hallo Gunter,
also bei mir geht das, wenn ich es hier einsetze:
z.B.
Private Sub TextBox1_AfterUpdate()
Dim i As Integer
Worksheets("Hilfe").Range("H18") = TextBox1.Value
'For i = 1 To 7
'If Sheets("Hilfe").Range("H" & i) > Sheets("Hilfe").Range("H19") Then
'Sheets("Hilfe").Range("H19") = Sheets("Hilfe").Range("H" & i)
'End If
Worksheets("Donnerstag").CommandButton1.Activate
Me.Hide
End Sub

Gruß
Bertram
Anzeige
AW: Focus auf Command Button
22.12.2016 14:26:01
Gunter
Das versteh ich nicht.
So sieht mein Button aus:
Option Explicit
Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As  _
Integer)
KW.Show
End Sub
Private Sub CommandButton1_Click()
KW.Show
End Sub

AW: Focus auf Command Button
22.12.2016 15:56:14
Mullit
Hallo,
lad mal einfach 'ne Bsp.-mappe hoch, dann sieht man wo Barthel den Most holt...
Gruß, Mullit
Anzeige
AW: Focus auf Command Button
22.12.2016 16:15:18
Gunter
Ok mach ich, Danke! Bei der Gelegenheit, nach dem öffnen des Sheets geht auch erst nach dem zweiten klick die UF auf. Beim ersten Mal wird sie wohl erst initialisiert. Kann man das nicht umgehen?
Hier ist mal die Datei

Die Datei https://www.herber.de/bbs/user/110168.xlsm wurde aus Datenschutzgründen gelöscht


Anzeige
AW: Datei zurück... Gruß
22.12.2016 22:16:50
Gunter
Hallo Robert
Das funktioniert leider immer noch nicht so wie gedacht. Nach dem drücken auf den Button Wochen-Eingabe öffnet die UF, nach Eingabe der Woche und Enter, schliesst/wird die UF ausgeblendet. Soweit ist alles gut. Ich möchte aber, dass nachdem die UF ausgeblendet wurde, durch ein weiteres Enter die UF wieder geöffnet wird. Geht das überhaupt so? Ich hatte gedacht, dass wenn der Focus auf den Button gesetzt wird durch Enter die UF wieder angezeigt wird.
Danke und Gruss
Gunter
Anzeige
Also...
23.12.2016 06:03:01
robert
Hi,
Du hast doch den Button zum öffnen-was meinst Du mit ENTER?
AW: Also...
23.12.2016 13:30:17
Gunter
Mit dem Button wird die UF, durch einen Mausklick geöffnet, dann wird die Woche eingegeben und mit Enter wird die UF ausgeblendet. Durch die Eingabe eines weiteren Enter soll die UF direkt nochmals geöffnet werden, ohne das mit der Maus auf den Button geklickt werden muss.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Fokus auf den Command Button in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Command Button einfügen: Füge einen Command Button in Dein Excel-Arbeitsblatt ein, indem Du die Funktion =EINBETTEN("Forms.CommandButton.1";"") nutzt.

  2. Ereignisse programmieren: Öffne den VBA-Editor (Alt + F11) und wähle Deinen Command Button aus. Du musst sowohl das Click-Ereignis als auch das KeyDown-Ereignis des Buttons programmieren.

    Private Sub CommandButton1_Click()
       KW.Show
    End Sub
    
    Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
       KW.Show
    End Sub
  3. Fokus setzen: Um sicherzustellen, dass der Button den Fokus erhält, füge am Ende des Codes der UserForm (UF) diese Zeile hinzu:

    Tabelle1.CommandButton1.Activate
  4. UserForm schließen: Verwende Me.Hide, um die UserForm nach der Eingabe zu schließen.

  5. Testen: Teste den Button, um sicherzustellen, dass die UserForm mit einem weiteren "Enter" erneut geöffnet werden kann.


Häufige Fehler und Lösungen

  • Button erhält keinen Fokus: Wenn der Button nach dem Schließen der UserForm keinen Fokus hat, stelle sicher, dass Du die Zeile Tabelle1.CommandButton1.Activate am Ende Deiner UserForm-Ereignisse eingefügt hast.

  • Ereignis funktioniert nicht: Überprüfe, ob der Name des Command Buttons korrekt ist. In dem oben genannten Beispiel sollte der Button CommandButton1 heißen.

  • UserForm öffnet sich nicht beim ersten Klick: Wenn die UserForm erst beim zweiten Klick erscheint, könnte es an der Initialisierung der Form liegen. Stelle sicher, dass alle erforderlichen Werte in der UserForm_Initialize korrekt gesetzt sind.


Alternative Methoden

  • VBA-Fokus verwenden: Du kannst die SetFocus-Methode verwenden, um den Fokus auf den Button zu setzen, indem Du CommandButton1.SetFocus nach dem Schließen der UserForm hinzufügst.

  • Verwende eine andere Steuerelementart: Wenn Du Schwierigkeiten mit dem Command Button hast, könntest Du auch ein ActiveX-Steuerelement oder einen Formularsteuerelement-Button ausprobieren, um zu sehen, ob sich das Verhalten ändert.


Praktische Beispiele

Hier ein einfaches Beispiel für die Implementierung:

Private Sub CommandButton1_Click()
    ' UserForm anzeigen
    KW.Show
    ' Button aktivieren
    Tabelle1.CommandButton1.Activate
End Sub

Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    ' UserForm erneut anzeigen
    KW.Show
End Sub

Private Sub UserForm_Activate()
    ' Fokus auf das erste Textfeld setzen
    TextBox1.SetFocus
End Sub

In diesem Beispiel wird die UserForm aufgerufen, und der Button erhält nach dem Schließen der Form wieder den Fokus.


Tipps für Profis

  • Code modularisieren: Überlege, Deine Code-Strukturen zu modularisieren, indem Du Funktionen für wiederverwendbare Teile erstellst.

  • Debugging-Tools nutzen: Verwende Debugging-Tools in VBA, um den Status von Variablen und die Ausführung Deines Codes zu überprüfen.

  • Verwendung von MsgBox: Nutze MsgBox, um den Status Deiner Variablen während der Ausführung zu überprüfen. Das kann hilfreich sein, um Probleme zu identifizieren.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass der Button immer den Fokus hat?
Stelle sicher, dass Du CommandButton1.Activate in den entsprechenden Ereignissen der UserForm hinzufügst.

2. Was mache ich, wenn der Button nicht reagiert?
Überprüfe, ob alle Ereignisse korrekt programmiert sind und dass der Button den richtigen Namen hat.

3. Kann ich die UserForm auch mit einer Tastenkombination öffnen?
Ja, Du kannst eine Tastenkombination in der Excel-Oberfläche oder über ein zusätzliches VBA-Skript definieren, um die UserForm zu öffnen.

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