Namensmanager und Farben

  • Excel

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Tobias.

    Namensmanager und Farben

    Hallo an alle :)!

    Ich bin gerade dabei ein Excel Datei zu erstellen. Hierbei würde ich gerne in einer Spalte die Zellen, die eine bestimmte Hintergrundfarbe haben, in eine "Namens"-Gruppe zusammenfassen. Ich kann das natürlich per Hand machen, allerdings kann es sein, dass neue Zeilen hinzukommen und ich dann vergesse die in die Gruppe aufzunehmen. Anbei ein Beispiel (hoffe mein Problem kommt rüber ?( ).

    Hab jetzt schon versucht, ob ich mit =ZELLE.ZUORDNEN(63;INDIREKT("ZS";)) weiter komme, dann hab ich schon mal die Hintergrundfarbe, danach hört es aber bei mir auf.

    Ziel ist das ich diese Gruppe später per VBA ansprechen kann um die enthaltene Formel zu ändern (brauche halt nur die Gruppe).
    Dateien
    • Beispiel.xlsx

      (69,71 kB, 89 mal heruntergeladen, zuletzt: )
    Code fürs entsprechende Worksheet:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Private Const Yellow = 65535
    3. Function ColorRange(ByVal Color As Long, Optional ByVal RangeFilter As Range) As Range
    4. Dim c As Range
    5. If RangeFilter Is Nothing Then Set RangeFilter = Cells
    6. For Each c In Intersect(UsedRange, RangeFilter)
    7. If c.Interior.Color = Color Then
    8. If ColorRange Is Nothing Then Set ColorRange = c Else Set ColorRange = Union(ColorRange, c)
    9. End If
    10. Next
    11. End Function
    12. Property Get YellowRange() As Range
    13. Set YellowRange = ColorRange(Yellow, Range("B:B"))
    14. End Property
    15. Private Sub SetYellowRange()
    16. Names.Add "YellowRange", RefersTo:="=" & YellowRange.Address 'create of not exists
    17. Names("YellowRange").RefersTo = "=" & YellowRange.Address 'overwrite
    18. Debug.Print Range("YellowRange").Address
    19. End Sub
    20. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    21. SetYellowRange
    22. End Sub
    Ich hoffe, du kommst damit klar.
    Wenn nicht, einfach fragen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --