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

Namen eines aktiven Steuerelements (Sheet) auslese

Forumthread: Namen eines aktiven Steuerelements (Sheet) auslese

Namen eines aktiven Steuerelements (Sheet) auslese
21.11.2002 17:56:25
Matthias S.
Hallo,

ich moechte mehreren Textboxen, Checkboxen, etc. in einem Excelsheet ein- und dieselbe Ereignisprozedur zuweisen. Innerhalb dieser Prozedur muss der Namen des jeweils aktiven Steuerungsobjekts ausgelesen werden. Geht das?
Hier die angedachte Konstruktion:

Z.B. unter Sheet(1):

Private Sub Textbox1.GotFocus()
Call Module1.ProzedurAction
End Sub
Private Sub Checkbox7.GotFocus()
Call Module1.ProzedurAction
End Sub
...

Z.B. in Module1:

Sub ProzedurAction()
' Hier weiss ich nicht, wie ich den Namen des gerade focussierten Steuerelements automatisch auslesen kann...
...
End Sub

Hat jemand eine Idee? Vielen Dank fuer Eure Hilfe!!!
Viele Gruesse,
Matthias S.

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Namen eines aktiven Steuerelements (Sheet) auslese
21.11.2002 19:47:29
Thomas Risi
Hallo Matthias

Ich würde eine 'Public'-Variable (Public ActiveControl As String) in z.B. Modul1 erstellen. Dieser kann man dann den Namen des focussierten Steuerelements zuweisen.

Also z.B. in der Art ...


Private Sub Textbox1.GotFocus()
    ActiveControl = Textbox1.Name
    Call Module1.ProzedurAction
End Sub

Private Sub Checkbox7.GotFocus()
    ActiveControl = Checkbox7.Name
    Call Module1.ProzedurAction
End Sub


' Im Modul1

Sub ProzedurAction()
   MsgBox ActiveControl
End Sub

 

     Code eingefügt mit Syntaxhighlighter 1.15

Gruß

Thomas

Risi Thomas Softwareentwicklung


Anzeige
Re: Namen eines aktiven Steuerelements (Sheet) auslese
21.11.2002 23:41:38
Matthias S.
Hi Thomas,

vielen Dank fuer Deine Hilfe! Ich wollte eigentlich auf Code ausserhalb des Moduls so weit wie moeglich verzichten. Ein Pendant zu 'ActiveControl' gibt es fuer Steuerelemente scheinbar leider nicht... Man haette dann direkt in der Prozedur

Variable = "ActiveSteuerelement".Name

setzen koennen. So muss ich ja doch immer wieder Textbox1, Checkbox7, etc. im Code nennen...
Werde es jetzt aber erst einmal wie von Dir vorgeschlagen umsetzen...
Viele Gruesse,
Matthias

Anzeige
;
Anzeige

Infobox / Tutorial

Namen eines aktiven Steuerelements in Excel auslesen


Schritt-für-Schritt-Anleitung

Um den Namen eines aktiven Steuerelements in Excel auszulesen, kannst du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor (Alt + F11) in Excel.
  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle "Einfügen" > "Modul".
  3. Füge die folgende Public-Variable hinzu:
    Public ActiveControl As String
  4. Füge den Code für die Steuerelemente hinzu: Ersetze Textbox1 und Checkbox7 durch die Namen deiner Steuerelemente.

    Private Sub Textbox1_GotFocus()
       ActiveControl = Textbox1.Name
       Call Module1.ProzedurAction
    End Sub
    
    Private Sub Checkbox7_GotFocus()
       ActiveControl = Checkbox7.Name
       Call Module1.ProzedurAction
    End Sub
  5. Implementiere die Prozedur in Modul1:
    Sub ProzedurAction()
       MsgBox ActiveControl
    End Sub
  6. Teste die Anwendung, indem du die Steuerelemente anclickst und beobachtest, ob der Name in einer MessageBox angezeigt wird.

Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden"
    Lösung: Stelle sicher, dass die Namen der Steuerelemente korrekt sind und dass du die richtigen Events verwendest (z.B. _GotFocus).

  • Fehler: Variable nicht definiert
    Lösung: Überprüfe, ob die Public-Variable ActiveControl im richtigen Modul deklariert ist.


Alternative Methoden

Eine alternative Methode ist die Verwendung von Application.Caller, um den Namen des aktiven Steuerelements zu ermitteln. Hier ist ein Beispiel:

Sub ProzedurAction()
    MsgBox Application.Caller
End Sub

Du kannst diese Methode in Kombination mit ActiveControl verwenden, um den Code zu optimieren und weniger Abhängigkeiten zu schaffen.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du den Namen aktiver Steuerelemente auslesen kannst:

  • Textboxen:

    Private Sub Textbox1_GotFocus()
      ActiveControl = Textbox1.Name
      Call ProzedurAction
    End Sub
  • Checkboxen:

    Private Sub Checkbox7_GotFocus()
      ActiveControl = Checkbox7.Name
      Call ProzedurAction
    End Sub

Durch diese Vorgehensweise kannst du mehrere Steuerelemente in einer einzigen Prozedur verarbeiten, was den Code übersichtlicher macht.


Tipps für Profis

  • Verwende Select Case: Um unterschiedliche Aktionen basierend auf dem aktiven Steuerelement auszuführen, kannst du Select Case verwenden:

    Select Case ActiveControl
       Case "Textbox1"
           ' Aktionen für Textbox1
       Case "Checkbox7"
           ' Aktionen für Checkbox7
    End Select
  • Fehlerprotokollierung: Implementiere eine Fehlerprotokollierung, um mögliche Probleme beim Zugriff auf Steuerelemente besser nachverfolgen zu können.


FAQ: Häufige Fragen

1. Wie kann ich den Namen mehrerer Steuerelemente gleichzeitig auslesen?
Du kannst eine Schleife verwenden, um durch alle Steuerelemente eines Formulars zu iterieren und deren Namen auszulesen.

2. Gibt es eine Möglichkeit, die Prozedur zu optimieren?
Ja, du kannst die Verwendung von Application.Caller in Betracht ziehen, um den Code kürzer und effizienter zu gestalten.

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