Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1316to1320
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Alle Controls im Tabellenblatt referenzieren

Alle Controls im Tabellenblatt referenzieren
12.06.2013 15:32:42
NoNet
Hallo Leute,
heute ist mir anscheinend echt zu heiß :-(
Kann mir jemand auf die Sprünge helfen, wie man alle Formular-Steuerelemente auf einem Tabellenblatt referenzieren kann ?
Auf einem UserForm ist das einfach :

For Each cnt In Me.Controls
MsgBox TypeName(cnt), , cnt.Name
Next

Die ActiveX-Steuerelemente auf einem Tabellenblatt kann man auch einfach referenzieren (mit der _ zusätzlichen Anweisung If TypeOF cnt is MSForms.CommandButton Then lassen sich z.B. alle CommandButtons ansteuern):

For Each cnt In ActiveSheet.OLEObjects
MsgBox cnt.Name
Next

Die Formular-Steuerelemente kann man aber offenbar nur über ihren konkreten Typ (Button, _ ListBox, Label etc.) ansteuern, oder (hier nur CommandButtons) ?

For Each cnt In ActiveSheet.Buttons
MsgBox cnt.Name
Next
'Das funktioniert leider nicht :
'    For Each cnt In ActiveSheet.Controls
'        MsgBox cnt.Name
'    Next

Gibt es ein übergeordnetes Object (ähnlich wie OLEObjects), das die Formular-Steuerelemente zusammenfasst ?
Ich möchte NICHT Shapes, DrawingObjects oder ähnliches verwenden.
Die VBA-Objekt-Referenz schweigt sich hierüber leider aus :-(
Danke, Gruß NoNet

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

Betreff
Datum
Anwender
Anzeige
AW: Alle Controls im Tabellenblatt referenzieren
12.06.2013 16:50:02
fcs
Hallo NoNet,
du wirst nicht ohne den Umweg über die Shape-Objekte auskommen.
Über den Shape-Typ kannst du die FormularSteuerelemente rausfischen.
Gruß
Franz
'Beispiel: Die Prüfung des FormControlType kann man sich natürlich auch schenken
Sub Find_FormularSteuerelemente()
Dim objShape As Shape, strFormControlTyp As String
Dim wks As Worksheet
Set wks = ActiveSheet
For Each objShape In wks.Shapes
If objShape.Type = msoFormControl Then
Select Case objShape.FormControlType
Case xlButtonControl: strFormControlTyp = "Schaltfläche"
Case xlCheckBox: strFormControlTyp = "Kontrollkästchen"
Case xlDropDown: strFormControlTyp = "Kombinationsfeld"
Case xlEditBox: strFormControlTyp = "Textfeld"
Case xlGroupBox: strFormControlTyp = "Gruppenfeld"
Case xlLabel: strFormControlTyp = "Beschriftung"
Case xlListBox: strFormControlTyp = "Listenfeld"
Case xlOptionButton: strFormControlTyp = "Optionsschaltfläche"
Case xlScrollBar: strFormControlTyp = "Bildlaufleiste"
Case xlSpinner: strFormControlTyp = "Drehfeld"
Case Else
strFormControlTyp = "unbekannt"
End Select
MsgBox "Name: " & objShape.Name & vbLf & "FormControlType: " & strFormControlTyp
End If
Next
End Sub

Anzeige
Danke dir, Franz ! _oT
13.06.2013 15:55:39
NoNet
_oT = "ohne Text"

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige