Thomas Risi Softwareentwicklung

Steuerelemente in Tabellenblatt

Um Steuerelemente in einem Tabellenblatt per Programm zu verändern/anzusprechen, bietet sich ein Schleifenkonstrukt an. Dieses eignet sich z.B. dazu, die Elemente einer bestimmten Klasse in einer Collection zu gruppieren.

Bei den seltsamen Bezeichnungen für die jeweiligen Steuerelemente handelt es sich um ProgId's (Prorammatic Identifier). Ein ProgId ist quasi ein Synonym für eine bestimmte Klasse, und deren GUID. In der Registry sind die ProgId's unter HKEY_CLASSES_ROOT zu finden.



Beispiel 1: Code für Klassenmodul der Tabelle ...
' Dieses Programm arbeitet sich durch alle Steuerelemente in 'Tabelle1', ' und wenn es auf ein 'Label' trifft, wird dessen Hintergrund geändert. Sub ChangeLBColor() Dim item As Object For Each item In Worksheets("Tabelle1").OLEObjects If item.ProgId = "Forms.Label.1" Then item.Object.BackColor = &H80FF25 End If Next item End Sub

Beispiel 2: Code für Klassenmodul der Tabelle ...
' ProgId's als Konstanten um sie einfacher einzusetzen Const CHECKBOX = "Forms.CheckBox.1" Const COMBOBOX = "Forms.ComboBox.1" Const COMMANDBUTTON = "Forms.CommandButton.1" Const IMAGE = "Forms.Image.1" Const LABEL = "Forms.Label.1" Const LISTBOX = "Forms.ListBox.1" Const OPTIONBUTTON = "Forms.OptionButton.1" Const SCROLLBAR = "Forms.ScrollBar.1" Const SPINBUTTON = "Forms.SpinButton.1" Const TEXTBOX = "Forms.TextBox.1" Const TOGGLEBUTTON = "Forms.ToggleButton.1" ' Hier wird der Hintergrund aller 'Labels' geändert und ' anschließend werden sie ausgerichtet. Sub ChangeLabels() Dim item As Object For Each item In Worksheets("Tabelle1").OLEObjects If item.ProgId = LABEL Then With item.Object .BackColor = &H80FF25 .SpecialEffect = 3 End With item.Left = 50 End If Next item End Sub

Beispiel 3: Code für Klassenmodul der Tabelle ...
' Hier werden alle 'Textbox'-Steuerelemente in eine Collection ' eingelesen um sie indiziert ansprechen zu können. Dim TextBoxes As New Collection Sub TBCollection() Dim item As Object For Each item In Worksheets("Tabelle1").OLEObjects If item.ProgId = TEXTBOX Then TextBoxes.Add item End If Next item IndexTest End Sub ' Jetzt ist jedes Element mit einem Index versehen. Sub IndexTest() Dim i As Long For i = 1 To TextBoxes.Count MsgBox TextBoxes(i).Name Next i End Sub

Bewerten Sie bitte dieses Programm.
1 2 3 4 5
Weniger nützlich Sehr nützlich
Bitte teilen Sie uns mit, warum Sie das Programm so bewertet haben. (optional)