Formular-Button-Sender auswerten, Zeile färben

  • Excel

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von petaod.

    Formular-Button-Sender auswerten, Zeile färben

    Hallo Forum,

    ich suche eine Möglichkeit, die Eigenschaften eines Formularsteuerelements
    in einem Tabellenblatt auszuwerten.

    Ich möchte nämlich einzelne Zeilen färben, neben jeder Zeile ist ein Button mit einer entsprechenden Beschriftung,
    also 1 - n.

    Die Funktion dafür zu schreiben ist nicht wirklich schwer aber ich möchte nicht für jeden Button eine Prozedur..

    Mein Code bisher:

    Visual Basic-Quellcode

    1. Function Farbe(Zeile As Integer)
    2. 'von - bis auswählen
    3. Range("A" & Zeile & ": D" & Zeile).Select
    4. 'Markierung rot färben
    5. With Selection.Interior
    6. .Pattern = xlSolid
    7. .Color = 255
    8. .TintAndShade = 0
    9. .PatternTintAndShade = 0
    10. End With
    11. 'deselektieren
    12. Range("A1").Select
    13. End Function


    Visual Basic-Quellcode

    1. Sub Formatieren()
    2. 'Function Farbe mit dem Parameter Zeile aufrufen 1 - n
    3. Call Farbe(1)
    4. End Sub


    Jetzt müsste ich theoretisch folgendes ändern:

    Visual Basic-Quellcode

    1. Sub Formatieren()
    2. 'Function Farbe mit dem Parameter Zeile aufrufen 1 - n
    3. Select Case (Sender).Commandbutton.Caption
    4. 1: Farbe (1)
    5. 2: Farbe (2)
    6. 3: Farbe (3)
    7. 'etc..
    8. End Select


    Das wäre der Pseudo-Code um den es geht.
    Wäre klasse wenn mir jemand sagen kann wie man den Sender eiens Formularsteuerelements auswerten kann in der Form wie ich es brauche.

    PS: das ist ein Modul, irgendwie hatte ich es schon mal geschafft - nicht in einem Modul mit "Me" auf das Tabellenblatt zuzugreifen - vllt hilft mir das ja?
    Du brauchst einen gemeinsamen Handler für alle Button-Events.

    Visual Basic-Quellcode

    1. 'Paste this into a new class module
    2. Public WithEvents ButtonGroup As MSForms.CommandButton
    3. Private Sub ButtonGroup_Click()
    4. MsgBox "you clicked a button"
    5. End Sub
    6. 'Paste this into a regular module
    7. Dim Buttons() As New btnClass
    8. Sub InitializeButtons()
    9. Dim obj As OLEObject, btn As MSForms.CommandButton, i As Long, ExcludeList As String
    10. ExcludeList = "CommandButton1, CommandButton2"
    11. i = 0
    12. For Each obj In Sheets("Sheet1").OLEObjects
    13. If TypeOf obj.Object Is MSForms.CommandButton Then
    14. Set btn = obj.Object
    15. If InStr(1, ExcludeList, btn.Name) = 0 Then
    16. i = i + 1
    17. ReDim Preserve Buttons(1 To i)
    18. Set Buttons(i).ButtonGroup = btn
    19. End If
    20. End If
    21. Next obj
    22. End Sub
    Ich weiß nicht mehr, wo ich die Anleitung her habe, aber sie funktioniert ganz brauchbar.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --