Excel で 1 つのシートのみマクロを有効にする方法

Excel で 1 つのシートのみマクロを有効にする方法

私の 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

関連情報