https://3c.gmx.net/mail/client/dereferrer?redirectUrl=http%3A%2F%2Fwww.herber.de%2Fforum%2Farchiv%2F1400to1404%2Ft1402771.htm
Meine Frage ist in der letzten Spalte AG steht eine Formel jedoch kein Wert. Mit If IsEmpty spuckt er mir ein Fehler aus, da er bestimmt die Formel dazu erkennt.
Wie kann ich prüfen ob nur der Wert leer ist obwohl eine Formel (im Hintergrund) drin steht.
Ich glaube das sollte mit Range().Value ="" gehen? wo muss ich das einbauen in angegebenen Code?
Ich danke für jede Hilfe
Lg
Thomas
'Erstellt unter Excel 2010 deutsch
Sub Leere_in_Lenkrad_Rot_neu()
Dim wks As Worksheet, rngRow As Range, rngZelle As Range, Farbe As Long
Set wks = ActiveWorkbook.Worksheets("Lenkrad")
Farbe = 255 'Colorwert der Markierfarbe 255 = rot
Application.ScreenUpdating = False
With wks.Range("C19:AG43") 'Bereich ggf. anpassen
.Interior.ColorIndex = -4142 'xlColorIndexNone
For Each rngRow In .Rows
If Application.WorksheetFunction.CountA(rngRow) > 0 Then
For Each rngZelle In rngRow.Cells
Select Case rngZelle.Column
Case 13 'Spalte M
If IsEmpty(rngZelle) Then
If fncCheckLeer(wks, rngZelle.Row, Array(16, 17, 18, 32)) = True Then
'alles ok
Else
'Zelle ist leer - mindestens eine der abhängigen Zellen ist ausgefüllt
rngZelle.Interior.Color = Farbe
End If
End If
Case 16, 17, 18, 32 'Spalte P. Q, R und AF
If Not IsEmpty(wks.Cells(rngZelle.Row, 13)) And IsEmpty(rngZelle) Then
rngZelle.Interior.Color = Farbe
End If
Case 14 'Spalte N
If IsEmpty(rngZelle) Then
If fncCheckLeer(wks, rngZelle.Row, Array(19, 20, 21)) = True Then
'alles ok
Else
rngZelle.Interior.Color = Farbe
End If
End If
Case 19, 20, 21 'Spalte S, T und V
If Not IsEmpty(wks.Cells(rngZelle.Row, 14)) And IsEmpty(rngZelle) Then
rngZelle.Interior.Color = Farbe
End If
Case 15 'Spalte O
If IsEmpty(rngZelle) Then
If fncCheckLeer(wks, rngZelle.Row, Array(22, 23, 24, 33)) = True Then
'alles ok
Else
rngZelle.Interior.Color = Farbe
End If
End If
Case 22, 23, 24, 33 'Spalte W, X, Y und AG
If Not IsEmpty(wks.Cells(rngZelle.Row, 15)) And IsEmpty(rngZelle) Then
rngZelle.Interior.Color = Farbe
End If
Case Else
If IsEmpty(rngZelle) Then
rngZelle.Interior.Color = Farbe
End If
End Select
Next
End If
Next rngRow
End With
Application.ScreenUpdating = True
End Sub
Function fncCheckLeer(wks As Worksheet, ByVal Zeile As Long, arrSpalten As Variant) As Boolean
'Prüft, ob alle Spalten im Array in der Zeile leer sind
Dim intSpalte As Integer
fncCheckLeer = True
For intSpalte = LBound(arrSpalten) To UBound(arrSpalten)
If Not IsEmpty(wks.Cells(Zeile, arrSpalten(intSpalte))) Then
fncCheckLeer = False
Exit For
End If
Next
End Function