Mit dieser Funktion stelle ich sicher, dass ich in meiner Tabelle nicht in einer Zeile viermal ein NULL-Wert habe (diesfalls wird die Zeile manuell ausgeblendet, da irrelevant).
Mein Code braucht eine Ergänzung, damit klar ist, dass sich die Funktion immer auf Bereiche in der aktuellen Datei bezieht. Wenn ich also eine zweite Datei geöffnet habe, in der die gleiche Funktion verwendet wird, darf diese zweite Datei keine Auswirkung auf erstere Datei haben.
Wer kann mir helfen?
Gruss, Peter
Function NULL4(rngA As Range, rngB As Range, rngC As Range, rngD As Range, dummy As Date) As String
Dim zz As Long, rngT As Range, lngT As Long, lngB As Long, lngC As Long, lngD As Long
If rngA.Columns.Count * rngB.Columns.Count * rngC.Columns.Count * rngD.Columns.Count 1 Then
NULL4 = "Jeder Bereich muss einspaltig sein."
ElseIf rngA.Areas.Count rngB.Areas.Count Or _
rngB.Areas.Count rngC.Areas.Count Or _
rngC.Areas.Count rngD.Areas.Count Then
NULL4 = "Die Bereiche müssen gleich viele Teilbereiche haben."
ElseIf rngA.Row rngB.Row Or rngB.Row rngC.Row Or rngA.Row rngD.Row Then
NULL4 = "Die Bereiche müssen in der selben Zeile beginnen."
ElseIf rngA.Count = rngB.Count And rngA.Count = rngC.Count And rngA.Count = rngD.Count Then
lngB = rngB.Column
lngC = rngC.Column
lngD = rngD.Column
For Each rngT In rngA.Areas
For zz = 1 To rngT.Count
lngT = rngT.Rows(zz).Row
If rngT(zz).EntireRow.Hidden Then
ElseIf IsEmpty(rngT(zz)) Or _
IsEmpty(Cells(lngT, lngB)) Or IsEmpty(Cells(lngT, lngC)) Or IsEmpty(Cells(lngT, lngD)) Then
ElseIf rngT(zz) = 0 And _
Cells(lngT, lngB) = 0 And Cells(lngT, lngC) = 0 And Cells(lngT, lngD) = 0 Then
If Len(NULL4) > 0 Then NULL4 = NULL4 & ";"
NULL4 = NULL4 & CStr(zz + rngT.Row - 1)
End If
Next zz
Next rngT
If NULL4 = "" Then NULL4 = "OK"
Else
NULL4 = "Alle Bereiche müssen gleiche Zeilenzahl haben."
End If
End Function