Beispielcode
23.05.2003 20:29:05
GraFri
HalloAnbei ein Beispielcode. Ich verwende ihn, um bei jeweils 3 Steuerelemente (ToggleButton, Label und TextBox) bei Klick auf das Toggle-Button die Hintergrundfarbe bzw. Schriftfarabe zu ändern.
' In ein Modul
'-----------------------------------------------------------------
' Im den Tabellenblätter befinden sich 3er Gruppen mit jeweils einem Togglebutton,
' einem Label und einer Textbox mit identischer Zeichenfolge im Namen (togSonder,
' labSonder, txtSonder - togBasis, labBasis, txtBasis usw.). Die Bezeichnung in
' den einzelnen Tabellenblättern kann auch gleich sein.
Option Explicit
Dim Toggles() As New FarbÄnderung
Private Sub Auto_Open()
Dim Anzahl As Byte
Dim a As Byte
Dim n As Byte
Dim namControl As String
Dim bezControl As String
bezControl = "Sonder-Basis-Jugend-Familien-Bündel-Van-LD" 'identische Zeichenfolge der 3er Gruppen
Anzahl = 0
For n = 1 To 2 ' Tabellenblatt 1 und 2 bzw. Sheets.Count für alle Tabellenblätter
For a = 1 To Sheets(n).OLEObjects.Count
namControl = Right(Sheets(n).OLEObjects(a).Name, Len(Sheets(n).OLEObjects(a).Name) - 3)
If InStr(bezControl, namControl) And Sheets(n).OLEObjects(a).Name Like "tog*" Then
Anzahl = Anzahl + 1
ReDim Preserve Toggles(1 To Anzahl)
Set Toggles(Anzahl).ToggleGroup = Sheets(n).OLEObjects(a).Object
End If
Next a
Next n
End Sub
' In ein Klassenmodul Name: FarbÄnderung
'-----------------------------------------------------------------
Option Explicit
Public WithEvents ToggleGroup As ToggleButton
Const Farbe1 As Long = &HFFFFFF 'weiß
Const Farbe2 As Long = &H808080 'grau
Const Farbe3 As Long = &H8000000F 'dunkelgrau
Const Farbe4 As Long = &HFFFFC0 'hellblau
Const Farbe5 As Long = &HC00000 'dunkelblau
Private Sub ToggleGroup_Change()
Dim TMP As String
TMP = Right(ToggleGroup.Name, Len(ToggleGroup.Name) - 3)
If TMP = vbNullString Then
Exit Sub
Else
With ActiveSheet
If ToggleGroup.Value = True Then
.OLEObjects("tog" & TMP).Object.BackColor = Farbe4
.OLEObjects("txt" & TMP).Object.BackColor = Farbe4
.OLEObjects("lab" & TMP).Object.ForeColor = Farbe5
Else
.OLEObjects("tog" & TMP).Object.BackColor = Farbe3
.OLEObjects("txt" & TMP).Object.BackColor = Farbe1
.OLEObjects("txt" & TMP).Object.Value = vbNullString 'Textboxinhalt löschen
.OLEObjects("lab" & TMP).Object.ForeColor = Farbe2
End If
End With
End If
End Sub
Vielleicht kannst du damit etwas anfangen.
mfg, GraFri