Vorgängerzellen per VBA einfärben
10.12.2010 15:17:40
NoNet
Hallo Holger,
wenn immer nur die gleiche Zelle (z.B. B3) geprüft werden soll, dann funktioniert folgende Lösung :
Gib in ein Modul (z.B. "Modul1") folgende Codezeile ein (globale Variable zum Speichern der Bezugszellen der "alten" Formel/Funktion aus Zelle B3) :
Public rngAlterBereich As Range
Gib in das Klassenmodul des Tabellenblattes der Zelle B3 folgenden Code ein :
Private Sub Worksheet_Change(ByVal Target As Range)
'Vorgaengerzellen einfärben
Dim rngZ As Range, rngFormelZelle As Range
Set rngFormelZelle = [B3] 'diese Zelle wird überprüft
If Not Intersect(Target, rngFormelZelle) Is Nothing Then
If Not rngAlterBereich Is Nothing Then rngAlterBereich.Interior.ColorIndex = xlNone
On Error Resume Next 'Falls keine Bezüge in Formel/Funktion :
If rngFormelZelle.HasFormula Then
For Each rngZ In rngFormelZelle.Precedents
'MsgBox rngZ.Value, , rngZ.Address
'oder auch : farblich markieren
rngZ.Interior.ColorIndex = 4 'Grün färben
If rngAlterBereich Is Nothing Then
Set rngAlterBereich = rngZ
Else
Set rngAlterBereich = Union(rngAlterBereich, rngZ)
End If
Next
End If
End If
End Sub
Gruß, NoNet