私の Excel シートでは、特定の列が空でないこと、その値が一意であることを検証しています。この検証は「Sheet1」でのみ実行する必要がありますが、他のシートでも機能します。私のコードは次のとおりです。
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
一意の値の 2 番目の検証は、Excel のデータ検証機能によって実行されます。
答え1
ActiveSheet を使用するのではなく、コードを実行するシートを指定する必要があります。
したがって、Sheet1 をチェックしたい場合は、次のように変更します。
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