In meinem Excel-Tabellenblatt prüfe ich, ob eine bestimmte Spalte nicht leer sein darf und ihre Werte eindeutig sein müssen. Diese Prüfung sollte nur für „Tabelle1“ durchgeführt werden, funktioniert aber auch für andere Tabellenblätter. Mein Code lautet
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ Cancel As Boolean)
Dim rngCell As Range
Dim lngLstRow As Long
lngLstRow = ActiveSheet.UsedRange.Rows.Count
For Each rngCell In Range("A1:A" & lngLstRow)
If rngCell.Value = 0 Then MsgBox ("Please enter a name in cell " & rngCell.Address) rngCell.Select
End If
Next
End Sub
Die zweite Validierung für eindeutige Werte wird durch die Datenvalidierungsfunktion in Excel durchgeführt.
Antwort1
Sie sollten das Blatt angeben, auf das der Code angewendet werden soll, anstatt ActiveSheet zu verwenden.
Wenn Sie also Sheet1 überprüfen möchten, ändern Sie es wie folgt:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim rngCell As Range
Dim lngLstRow As Long
lngLstRow = Sheet1.UsedRange.Rows.Count
For Each rngCell In Sheet1.Range("A1:A" & lngLstRow)
If rngCell.Value = 0 Then
MsgBox "Please enter a name in cell " & rngCell.Address
Sheet1.Activate
rngCell.Select
End If
Next
End Sub