AW: Formeln mit Konstanten finden via VBA
20.02.2007 18:40:57
Coach
Hallo Andreas,
folgender Code markiert Zellen, die mindestens einen Zellbezug und eine Konstante enthalten:
Option Explicit
Sub MarkiereFormelnMitKonstanten()
Const Operatoren = "=^&/()*+<>-"
Dim r As Range, Formeln As Range, Formel As Variant, AnzBezuege As Long, AnzKonstanten As Long, i As Long
On Error Resume Next
Application.ScreenUpdating = False
Set Formeln = Nothing
Set Formeln = ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas)
If Formeln Is Nothing Then Exit Sub
With Formeln.Interior
.ColorIndex = 0
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
For Each r In Formeln
Formel = r.Formula
AnzBezuege = 0: AnzKonstanten = 0
'offen: Konstanten in Namen vorher ersetzen
For i = 1 To Len(Operatoren)
Formel = Replace(Formel, Mid(Operatoren, i, 1), ",")
Next
Formel = Split(Formel + ",", ",", -1, vbTextCompare)
For i = LBound(Formel) To UBound(Formel) - 1
If Formel(i) <> vbNullString Then
If IsRange(Formel(i)) Then
AnzBezuege = AnzBezuege + 1
ElseIf IsNumeric(Formel(i)) Then
AnzKonstanten = AnzKonstanten + 1
End If
End If
Next
If AnzKonstanten > 0 And AnzBezuege > 0 Then r.Interior.ColorIndex = 36
Next
Application.ScreenUpdating = True
End Sub
Function IsRange(ByVal Bezug$) As Boolean
'offen: Bezüge zu verknüpften Dateien
On Error Resume Next
IsRange = False
IsRange = IsObject(Range(Bezug))
End Function
Einschränkungen als Kommentar angegeben.
Gruß Coach