Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Focus abfragen

Forumthread: Focus abfragen

Focus abfragen
06.09.2003 17:41:12
Andrea
Hallo zusammen,
bekomme folgendes Problem nicht in den Griff: Ich habe auf einer UserForm 4 TextBoxen. Wenn der Anwender auf einen Button klickt soll er explicit zu der jeweiligen TextBox eine Information erhalten. Wie schaffe ich es nach dem Klick-Ereignis zu erkennen in welcher TextBox der Cursor steht damit ich die entsprechende Information absetzen kann?
Danke für jeden Hinweis.
Gruß Andrea

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Focus abfragen
06.09.2003 17:59:51
Hajo_Zi
Hallo Andrwa

ich habe ich mal meine schlauen Bücher befragt und einiges getestet aber ich habe keine Aktion gefunden um den Fokus abzufragen. Benutze doch das Ereignis DblClick der Textbox zum Aufruf der Hilfe. Oder benutze die Eigenschaft "ControlTipText" der Textbox um dem Benutzer Informationen zu geben.


Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.

Zurzeit gibt es wieder Probleme mit der E-Mail Benachrichtigung.

Ich bekomme Mails zu Beiträgen an denen ich nicht beteiligt bin und zusätzlich noch Mails zu meinen eigenen Beiträgen.
Das Problem mit den eigenen Benachrichtigung kann gelöst werden durch Lösche und Neuanmelden. Dieses möchte ich aber nicht jeden Tag machen.
Um dieses Problem erstmal zu beseitigen habe ich die automatische Mailbenachrichtigung abgeschaltet.
Aus diesem Grunde ist es dem Zufall überlassen ob auf Rückfragen Antworten von mir kommen.
Anzeige
AW: Focus abfragen
06.09.2003 18:11:13
Andrea
Hallo Hajo,
zunächst erstmal vielen Dank für die Hinweise. ControlTipText habe ich im Einsatz, die Information ist aber zu lang und wird am Bildschirmrand abgeschnitten. Ich weiß nicht ob man sie in zwei oder mehr Zeilen darstellen kann. DblClick habe ich bisher noch nicht kennengelernt. Werde mich daher sofort damit beschäftigen.
Tschüss bis dann.
Gruß Andrea
Anzeige
AW: Focus abfragen
06.09.2003 18:12:30
K.Rola
Hallo,

du kannst in einem Klassenmodul beim Enter- Ereignis eine Objekt-
variable setzen:

Private Sub TextBox_Enter()
Set ac = ActiveControl
End Sub


und dann im Klick- Ereignis des Button:


Private Sub CommandButton1_Click()
MsgBox ac.Name
End Sub


Bei nur 4 Textboxen kannst du das natürlich auch für jede Textbox
einzeln machen:


Private Sub TextBox1_Enter()
Set ac = ActiveControl
End Sub


Der richtige Weg ist das aber nicht, nutz das Mousedown- Ereignis
oder WhatThis- Button.

Gruß K.Rola
Anzeige
AW: Focus abfragen
06.09.2003 18:35:50
GraFri
Hallo

Noch ein Lösungsansatz



Option Explicit

Dim indexTextBox(1 To 4) As Boolean


Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    indexTextBox(1) = True:    indexTextBox(2) = False
    indexTextBox(3) = False:   indexTextBox(4) = False
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    indexTextBox(1) = False:    indexTextBox(2) = True
    indexTextBox(3) = False:   indexTextBox(42) = False
End Sub

Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    indexTextBox(1) = False:    indexTextBox(2) = False
    indexTextBox(3) = True:   indexTextBox(4) = False
End Sub

Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    indexTextBox(1) = False:    indexTextBox(2) = False
    indexTextBox(3) = False:   indexTextBox(4) = True
End Sub

'Button
Private Sub cmdTextBoxHilfe_Click()
    If indexTextBox(1) = True Then MsgBox "Hilfe zu TextBox1"
    If indexTextBox(2) = True Then MsgBox "Hilfe zu TextBox2"
    If indexTextBox(3) = True Then MsgBox "Hilfe zu TextBox3"
    If indexTextBox(4) = True Then MsgBox "Hilfe zu TextBox4"
End Sub


     Code eingefügt mit Syntaxhighlighter 2.4


mfg, GraFri
Anzeige
;
Anzeige

Infobox / Tutorial

Fokus auf TextBoxen in UserForms richtig setzen


Schritt-für-Schritt-Anleitung

Um den Fokus auf eine TextBox in einer UserForm abzufragen und dem Anwender eine entsprechende Information anzuzeigen, kannst du folgende Schritte befolgen:

  1. Öffne den VBA-Editor in Excel (Alt + F11).
  2. Erstelle eine UserForm und füge vier TextBoxen und einen CommandButton hinzu.
  3. Füge den folgenden Code in das Klassenmodul der UserForm ein:
' Objektvariable für die aktive TextBox
Dim ac As MSForms.Control

Private Sub TextBox1_Enter()
    Set ac = ActiveControl
End Sub

Private Sub TextBox2_Enter()
    Set ac = ActiveControl
End Sub

Private Sub TextBox3_Enter()
    Set ac = ActiveControl
End Sub

Private Sub TextBox4_Enter()
    Set ac = ActiveControl
End Sub

Private Sub CommandButton1_Click()
    MsgBox "Aktive TextBox: " & ac.Name
End Sub
  1. Teste die UserForm und klicke auf die TextBoxen, um den Fokus zu setzen. Klicke dann auf den Button, um den Namen der aktiven TextBox anzuzeigen.

Häufige Fehler und Lösungen

  • Fehler: Der Button zeigt immer "TextBox1" an, egal, welche TextBox aktiv ist.

    • Lösung: Stelle sicher, dass die Enter-Ereignisse für jede TextBox korrekt implementiert sind.
  • Fehler: Die Informationen in ControlTipText sind abgeschnitten.

    • Lösung: Überlege, die Informationen in mehrere Zeilen zu teilen oder eine andere Methode zur Anzeige der Hilfetexte zu verwenden, z.B. mit MsgBox.

Alternative Methoden

Anstatt die Enter-Ereignisse zu verwenden, kannst du auch das DblClick-Ereignis nutzen:

Private Sub TextBox1_DblClick()
    MsgBox "Hilfe zu TextBox1"
End Sub

Du kannst diese Methode für jede TextBox wiederholen, um spezifische Hilfeinformationen anzuzeigen. Dies ist besonders nützlich, wenn du umfangreiche Informationen bereitstellen möchtest.


Praktische Beispiele

Hier ist ein Beispiel, wie du die Hilfe für jede TextBox implementieren kannst:

Private Sub CommandButton1_Click()
    If ac.Name = "TextBox1" Then
        MsgBox "Hilfe zu TextBox1"
    ElseIf ac.Name = "TextBox2" Then
        MsgBox "Hilfe zu TextBox2"
    ElseIf ac.Name = "TextBox3" Then
        MsgBox "Hilfe zu TextBox3"
    ElseIf ac.Name = "TextBox4" Then
        MsgBox "Hilfe zu TextBox4"
    End If
End Sub

Dies ermöglicht es dir, spezifische Informationen je nach aktiver TextBox anzuzeigen.


Tipps für Profis

  • Nutze Tooltips für kurze Informationen, die bei Hover über TextBoxen angezeigt werden.
  • Implementiere Kontextmenüs für eine bessere Benutzererfahrung, wenn du viele Informationen bereitstellen möchtest.
  • Überlege, den WhatThis-Button zu verwenden, um Hilfetexte anzuzeigen, ohne die UserForm zu überladen.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zeilen in ControlTipText darstellen?
ControlTipText unterstützt keine Zeilenumbrüche. Überlege, stattdessen MsgBox oder Labels zu verwenden.

2. Kann ich diese Methode in Excel 2010 verwenden?
Ja, der beschriebene Code funktioniert auch in Excel 2010 und höheren Versionen. Achte darauf, dass du die richtigen Steuerelemente verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige