![Excel で 1 つのシートのみマクロを有効にする方法](https://rvso.com/image/1628413/Excel%20%E3%81%A7%201%20%E3%81%A4%E3%81%AE%E3%82%B7%E3%83%BC%E3%83%88%E3%81%AE%E3%81%BF%E3%83%9E%E3%82%AF%E3%83%AD%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.png)
私の 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