Zugriff auf Elemente benannter Bereich in Excel mit VBA

serialize

king of the mud
ID: 16058
L
28 April 2006
152
16
Hallo liebe Mit-Klammer,

ich sitze gerade an einer Excel-Tabelle, in der die Bearbeitung komplexer Dokumente mit meinen Kollegen abgestimmt werden soll. Kurz die Idee:

Dokumentstruktur im Excel-Dokument (in den ersten Spalte):

- Kapitel 1
-- Kapitel 1.1
-- Kapitel 1.2
- Kapitel 2
-- Kapitel 2.1
-- Kapitel 2.2
-- Kapitel 2.3
-- ...
- ...

Kapitel 1 kann zusammengeklappt werden, so dass Kapitel 1.1 und Kapitel 1.2 ausgeblendet werden (das hab ich bereits)

Jetzt gibt es verschiedene Stati für ein Kapitel ("noch nix getan", "in Bearbeitung", "fertig für Review" und "freigegeben"). Jede dieser Stati soll durch unterschiedliche Hintergrundfarben dargestellt werden, wie in diesem Bild:

32d6c0a90af0cd6a15f249dbbc532c548727d824.jpg

Jetzt möchte ich anhand des Unterkapitel einen Status für das Kapitel setzen und hab mir folgendes gedacht:

Man nehme den blau umrahmten Bereich ...

371841fdc610040c7ce21f452f6613a27bac53c7.jpg

... und benennt Ihn, z.B. "Sub_Kapitel1". Nachher im VBA-Skript gehe ich von Zelle zu Zelle dieses Bereiches und ermittle die Hintergrundfarbe der Zelle z.B. um letztlich die Farbe mit dem größten Wert (Interior.ColorIndex) zu erhalten. Diese Farbe wird dann über dem blau eingerahmten Bereich eingefügt, sodass man auch nach dem Zusammenklappen sieht, in welchem Status sich das Kapitel 1 befindet.

Jetzt meine Frage: Wie kann ich die einzelnen Elemente des benannten Bereichs abklappern?

Meine bisherigen Ergüsse:

Code:
Sub setFarbwertWRTCells(strIDXCell As String, strCellArea As Range)
    Dim Color As Integer
    Color = 15
    
    For Each strCell In strCellArea
        If Color = 15 Then
            [...]
        End If
    Next
    Worksheets(ActiveSheet.Name).Range(strIDXCell).Interior.ColorIndex = Color
End Sub

Sub doColorUpdate()
  setFarbwertWRTCells "Ch1_Kapitel1", Application.Range("Ch1_SubKapitel1")
End Sub
Knackpunkt ist halt:

Code:
Sub setFarbwertWRTCells(strIDXCell As String, strCellArea As Range)
    Dim Color As Integer
    Color = 15
    
    For Each strCell In strCellArea
        [...]
    Next

Habt Ihr eine Idee, wie ich da von Zelle zu Zelle des Bereichs komme???

Besten Dank,
Salve, Serialize :mrgreen:
 
ich hab's :)

Hi Ihr,

ich hab's gerade rausgefunden, es muß natürlich wie folgt aussehen:

Code:
Sub setFarbwertWRTCells(strIDXCell As String, strCellArea As [COLOR="Red"]String[/COLOR])
    Dim Color As Integer
    Color = 15
    
    For Each [COLOR="Red"]Element[/COLOR] In [COLOR="Red"]Application.Worksheets(ActiveSheet.Name).Range(strCellArea)[/COLOR]
        [...]
    Next
End Sub

Sub doColorUpdate()
  setFarbwertWRTCells "Ch1_Kapitel1",[COLOR="Red"]"Ch1_SubKapitel1"[/COLOR])
End Sub

Dann geht das wundarbar :)
Salva, serialize