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

Forumthread: Steuerelemente per VBA ansprechen...

Steuerelemente per VBA ansprechen...
08.02.2007 13:30:07
Jens
Hallo Leute,
also, zu meinem Betreff: ich weiss, wie man Steuerelemente in einem Tabllenblatt (die aus der Steuerelement-Toolbox) per VBA anspricht.
Hier geht's um folgende konkrete Frage:
wie kann ich feststellen, welchen Typ ein Steuerelement hat, also z.B. ob es sich um einen CommandButton handelt? ZB würde das gehen mit
For Each oShp In Worksheets(1).Shapes
If oShp.Type = msoOLECommandButton Then ...
Next oShp
Nur leider gibt's so was wie 'msoOLECommandButton' meines Wissens nicht... Sondern nur msoOLEControlObject, mit dem ich feststellen kann, ob es sich grundsätzlich mal um ein Steuerelement handelt...
Oder es könnte auch über die OLEObjects-Auflistung gehen. ZB:
For i = 1 To Worksheets(1).OLEObjects.Count
If Worksheets(1).OLEObjects(i).Type = msoOLECommandButton
Next i
Gibt's aber meines Wissens auch nicht...
Hat wer eine Idee? Danke sagt
der Jens
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Steuerelemente per VBA ansprechen...
08.02.2007 13:43:39
Heiko
Hallo Jens,
z.B. so:

Sub TestT()
Dim objI As OLEObject
For Each objI In Worksheets(1).OLEObjects
MsgBox TypeName(objI.Object)
MsgBox VarType(objI.Object)
Next objI
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
AW: Steuerelemente per VBA ansprechen...
08.02.2007 14:49:26
Jens
Hallo heiko,
also:
VarType liefert 9, also vbObject
TypeName liefert OLEObject
Beide sagen mir nicht wirklich, ob's um einen CommandButton oder ein anderes Steuerelement geht...
LG,
der jens
Anzeige
AW: Steuerelemente per VBA ansprechen...
08.02.2007 15:31:33
Heiko
Hallo Jens,
hast du denn mein Beispiel 1 zu 1 kopiert und getestet ?!
Gruß Heiko
PS: Rückmeldung wäre nett !
AW: Steuerelemente per VBA ansprechen...
08.02.2007 15:52:34
Jens
ja, hab das in meinem VBA-Projekt genau so getestet wie du es geschrieben hast. Hab mir VarType und TypeName ins Direktfenster ausgeben lassen, und die Ergebnisse davon sind die von meinem letzten Beitrag, also
9 für VarType, und
OLEObject für TypeName
lg,
der jens
Anzeige
AW: Steuerelemente per VBA ansprechen...
08.02.2007 15:56:51
Heiko
Hallo Jens,

Sub TestT()
Dim objI As OLEObject
For Each objI In Worksheets(1).OLEObjects
' Gibt bei mir unter EXCEL 2000 den Namen des Steuerelementes aus
MsgBox TypeName(objI.Object)
' Gibt bei mir unter EXCEL 2000 OLEObject aus
MsgBox TypeName(objI)
MsgBox VarType(objI.Object)
Next objI
End Sub

Wenn du wirklich immer das .Object (TypeName(objI.Object)) mit drin hast dann liegt es wohl an deiner 2003 Office Version, dann kann ich auch nicht helfen. Denn bei mir läuft mein Beispiel so wie gewünscht.
Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Steuerelemente per VBA ansprechen...
08.02.2007 16:35:04
Jens
hallo heiko,
sorry: mein fehler. Hatte das .Object vergessen.
VarType liefert immer noch keinen wirklichen Hinweis, welches Objekt ich hab.
Aber TypeName(MeinObjekt.Object) liefert "CommandButton" zurück, also genau das, was ich suchte!
Vielen Dank, alles gelöst! sagt
der Jens
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Steuerelemente in Excel per VBA ansprechen


Schritt-für-Schritt-Anleitung

Um Steuerelemente in Excel per VBA anzusprechen, folge diesen Schritten:

  1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu, indem du rechtsklickst und „Einfügen“ > „Modul“ wählst.

  3. Kopiere und füge den folgenden VBA-Code ein:

    Sub TestT()
       Dim objI As OLEObject
       For Each objI In Worksheets(1).OLEObjects
           MsgBox TypeName(objI.Object)
           MsgBox VarType(objI.Object)
       Next objI
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus, um die Typen der Steuerelemente anzuzeigen.

Dieser Code geht durch alle OLE-Objekte in deinem ersten Arbeitsblatt und gibt deren Typen aus.


Häufige Fehler und Lösungen

  • Fehler: TypeName gibt nicht den erwarteten Steuerelementtyp zurück.

    • Lösung: Stelle sicher, dass du objI.Object verwendest. Beispiel: TypeName(objI.Object).
  • Fehler: VarType liefert nicht die gewünschten Informationen.

    • Lösung: VarType gibt den Typ als Zahl zurück, was manchmal nicht ausreichend ist. Nutze TypeName, um spezifischere Informationen zu erhalten.
  • Fehler: Probleme mit der Excel-Version.

    • Lösung: Der VBA-Code kann je nach Excel-Version unterschiedlich reagieren. Teste den Code in der Version, in der du arbeitest (z.B. Excel 2003 oder Excel 2000).

Alternative Methoden

Eine weitere Methode, um den Typ eines Steuerelements zu überprüfen, ist die Verwendung der OLEObjects-Auflistung. Hier ist ein Beispiel:

Sub CheckOLEObjects()
    Dim i As Integer
    For i = 1 To Worksheets(1).OLEObjects.Count
        If TypeName(Worksheets(1).OLEObjects(i).Object) = "CommandButton" Then
            MsgBox "Das Steuerelement ist ein CommandButton."
        End If
    Next i
End Sub

Diese Methode gibt dir die Möglichkeit, gezielt nach bestimmten Steuerelementtypen zu suchen.


Praktische Beispiele

Hier sind einige praktische Beispiele, um mit Steuerelementen in Excel umzugehen:

  1. Ermitteln des Steuerelementtyps:

    Sub IdentifyControlType()
       Dim objI As OLEObject
       For Each objI In Worksheets(1).OLEObjects
           MsgBox "Typ: " & TypeName(objI.Object)
       Next objI
    End Sub
  2. Zugriff auf Eigenschaften eines CommandButtons:

    Sub ModifyCommandButton()
       Dim cmdBtn As OLEObject
       Set cmdBtn = Worksheets(1).OLEObjects(1) ' Angenommen, der erste OLEObject ist ein CommandButton
       If TypeName(cmdBtn.Object) = "CommandButton" Then
           cmdBtn.Object.Caption = "Neuer Titel"
       End If
    End Sub

Tipps für Profis

  • Nutze Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler zu vermeiden.
  • Halte deine Excel-Version aktuell, um von den neuesten Funktionen und Fehlerbehebungen zu profitieren.
  • Verwende Fehlerbehandlungsroutinen, um unerwartete Fehler während der Ausführung deines Codes abzufangen.

FAQ: Häufige Fragen

1. Wie erkenne ich den Typ eines Steuerelements in Excel VBA?
Du kannst den Typ eines Steuerelements ermitteln, indem du TypeName(objI.Object) verwendest, wo objI dein OLEObject ist.

2. Was mache ich, wenn mein Code nicht in der gewünschten Excel-Version funktioniert?
Überprüfe die Versionseinstellungen und teste den Code in der spezifischen Version. Möglicherweise gibt es Unterschiede in der Implementierung.

3. Wie kann ich auf die Eigenschaften eines spezifischen Steuerelements zugreifen?
Du kannst auf Eigenschaften zugreifen, indem du das Steuerelement über die OLEObjects-Sammlung referenzierst und dann die gewünschten Eigenschaften abfragst, z.B. cmdBtn.Object.Caption.

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