ich habe folgenden sehr gut funktionierenden Code (auch dank der Hilfe des Forums hier :) ) und würde gerne noch eine Erweiterung vornehmen:
Es sollen zusätzlich bei Betätigen des CommandButtons alle leeren Felder farbig markiert oder umrandet werden (z.B. rot). wenn man dann das farbige Feld beschreibt und erneut den Command Button klickt, soll dann die Farbe wieder weggehen bzw. wie gehabt nur bei leeren Feldern erscheinen.
Dies ist mein Code, der die Ergänzung braucht:
Private Sub CommandButton22_Click()
Dim sFileName As String
Dim myRange As Range, cel As Range
Set myRange = Tabelle1.Range("A1:BX26")
Dim objSh As Shape
Dim Leer As String, LeerCombo As String, msgText As String
'Überprüfen der Comboxen
For Each objSh In Tabelle1.Shapes
With objSh
If .Type = msoOLEControlObject Then
'Überprüfen der Active-X Comboboxen
If InStr(LCase(.OLEFormat.progID), "combobox") > 0 Then
If objSh.OLEFormat.Object.Object.ListIndex = -1 Then
If LeerCombo = "" Then
LeerCombo = objSh.Name
Else
LeerCombo = LeerCombo & ", " & objSh.Name
End If
End If
End If
ElseIf .Type = msoFormControl Then
'Überprüfen der FormControl-Comboboxen (DropDowns)
If .FormControlType = xlDropDown Then
If objSh.ControlFormat.ListIndex = 0 Then
If LeerCombo = "" Then
LeerCombo = objSh.Name
Else
LeerCombo = LeerCombo & ", " & objSh.Name
End If
End If
End If
End If
End With
Next
For Each cel In myRange
If cel.Address = cel.MergeArea(1).Address And cel.Value = "" Then _
Leer = Leer & cel.Address & ", "
Next
If Len(Leer & LeerCombo) = 0 Then 'alle Zellen sind ausgefüllt
'Dateiname aus Combobox holen
sFileName = Format(Date, "yyyy/mm/dd_") & "Verpackung Produktionslinie_" & "Linie " & _
ComboBox21.Value
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\12_Test VBA Speicherort\X" & sFileName & ".xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Application.DisplayAlerts = True
ActiveWorkbook.Close savechanges:=True 'Datei shliessen und ggf. speichern
Application.Quit 'Excel beenden ?
Else
If Leer "" Then
Leer = Left(Leer, Len(Leer) - 2)
msgText = "Die Zellen " & Leer
End If
If LeerCombo "" Then
msgText = msgText & IIf(Leer "", vbLf & "und die", "Die") & " Comboboxen " & _
LeerCombo
End If
msgText = msgText & vbLf & "müssen noch ausgefüllt werden."
MsgBox msgText
End If
End Sub
Als Farbcode hatte ich schonmal folgendes:
Private Sub CommandButton21_Click()
Dim myRange As Range, cel As Range
Set myRange = Tabelle1.Range("A1:BX26")
myRange.Interior.ColorIndex = xlNone
For Each cel In myRange
If Trim(cel.Value) = "" Then cel.Interior.ColorIndex = 3
Next cel
End Sub
Jedoch macht der Code alle anderen Zellen vorher weiß, was ich nicht will, weil dadurch das Layout verändert wird:
Ich freue mich über Eure Hilfe!
Danke
Lg Schlu