| 
    
     |  | Targetが複数セルのことがあるので、for eachでループしてみるのは如何でしょうか? Private Sub Worksheet_Change(ByVal Target As Range)
 ' Anに値が入力されていないとBn,Cn,Dn,En,Fnは、入力できずに
 '「大項目を入力して下さい」とエラーメッセージがでるようにする
 ' n:1〜41
 Dim r As Range
 For Each r In Target
 If Not Intersect(r, Sheet1.Range("B1:F41")) Is Nothing Then
 If Sheet1.Range("A" & r.Row) = "" Then
 MsgBox "大項目を入力して下さい"
 End If
 End If
 Next
 End Sub
 
 複数セルを一気に更新して大量にエラーが出るのが嫌であれば、ループから抜けてください。
 Private Sub Worksheet_Change(ByVal Target As Range)
 ' Anに値が入力されていないとBn,Cn,Dn,En,Fnは、入力できずに
 '「大項目を入力して下さい」とエラーメッセージがでるようにする
 ' n:1〜41
 Dim r As Range
 For Each r In Target
 If Not Intersect(r, Sheet1.Range("B1:F41")) Is Nothing Then
 If Sheet1.Range("A" & r.Row) = "" Then
 MsgBox "大項目を入力して下さい"
 Exit For ' ★
 End If
 End If
 Next
 End Sub
 
 
 無関係な広範囲のセルを更新時に大量にループするのが嫌であれば下記で
 Private Sub Worksheet_Change(ByVal Target As Range)
 ' Anに値が入力されていないとBn,Cn,Dn,En,Fnは、入力できずに
 '「大項目を入力して下さい」とエラーメッセージがでるようにする
 ' n:1〜41
 Dim r As Range
 If Not Intersect(Target, Sheet1.Range("B1:F41")) Is Nothing Then ' ★
 For Each r In Target
 If Not Intersect(r, Sheet1.Range("B1:F41")) Is Nothing Then
 If Sheet1.Range("A" & r.Row) = "" Then
 MsgBox "大項目を入力して下さい"
 End If
 End If
 Next
 End If
 End Sub
 
 |  |