Ich hab letzte Woche schon mal geschrieben und hier super Hilfe bekommen, müsste jetzt aber etwas ändern und bekomms nicht hin.
Also, hier die Ausgangslage - ich hab 3 Fragen:
- Bei Frage 1 muss ein Feld im Range c24:f24 mit x ausgefüllt sein, aber nur eines, nicht mehrere
- Bei Frage 2 muss ein Feld im Range c40:f40 mit x ausgefüllt sein, aber nur eines, nicht mehrere
- Bei Frage 3 muss ein Feld im Range c46:f46 mit x ausgefüllt sein, aber nur eines, nicht mehrere
Ich möchte auch in der MsgBox nur die Zeilennummer einmal aufgelistet haben.
Hier der Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Msg As String
If ActiveSheet.Name = "Kompetenznachweis" Then
Msg = CheckZellen(Msg, Range("C24:F24"))
Msg = CheckZellen(Msg, Range("C40:F40"))
Msg = CheckZellen(Msg, Range("C46:F46"))
If Len(Msg) Then
MsgBox "Fehlende oder zu viel Werte in den Zeilen:" & vbCr & Msg & vbCr & vbCr & " _
Bitte korrigieren.", 48, " FALSCHE ANGABEN"
Cancel = True
End If
End If
End Sub
Private Function CheckZellen(sMsg As String, rng As Range) As String
Dim Zelle As Range
If WorksheetFunction.CountIf(rng, "x") = 0 Then
For Each Zelle In rng
If IsEmpty(Zelle) Then sMsg = sMsg & vbCr & Zelle.Row
Next Zelle
ElseIf WorksheetFunction.CountIf(rng, "x") > 1 Then
For Each Zelle In rng
If IsEmpty(Zelle) Then sMsg = sMsg & vbCr & Zelle.Row
Next Zelle
End If
CheckZellen = sMsg
End Function
Hoffentlich hab ich mich verständlich ausgedrückt.Danke euch schon mal und liebe Grüsse
Leah