| 
    
     |  | 皆さん今晩は。 
 仕事から帰ってみると、レスが進んでいるのですが、遅ればせながら、こんな感じでどうでしょうか。
 
 '(1)(2)(3)のようにすれば、ClearContentsによるイベントは発生しません。
 
 今は、On Error Resume Next は使わない方が良いので、削除しています。
 
 Private Sub Worksheet_Change(ByVal Target As Range)
 
 Application.EnableEvents = False  '<==●(1)
 If Not Intersect(Target, Range("C7:C26")) Is Nothing Then
 If Target.Value = Empty Then
 Range(Target.Offset(, 1), Target.Offset(, 9)).ClearContents
 GoTo Jump_Exit '<==●(2)
 Else
 '''品名に合わせたリストを選択し表示させる
 '-----------------------
 MsgBox "名前を付け"
 '以下のコードは、上記 MsgBox "名前を付け"で代用し、検討していません。
 '従って、コメントにしています。
 '
 '----------------------
 '名前を付け
 '名前 = ActiveCell.Value
 '品目を選択した行の右隣のリストを名前付けしたものに変更
 'With Selection.Offset(0, 1).Validation
 '  .Delete
 '  .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
 '    xlBetween, Formula1:="=" & "部品_" & 名前
 '  .IgnoreBlank = True
 '  .InCellDropdown = True
 '  .IMEMode = xlIMEModeNoControl
 '  .ShowInput = True
 '  .ShowError = True
 'End With
 End If
 End If
 
 '※下記のコードが動いてしまっているようです。
 '●下記のコードは止まっているはず●
 If Not Intersect(Target, Range("D7:D26")) Is Nothing Then
 MsgBox "省略"
 End If
 
 If Not Intersect(Target, Range("E7:E26")) Is Nothing Then
 MsgBox "省略"
 End If
 
 If Not Intersect(Target, Range("I7:I26")) Is Nothing Then
 MsgBox "省略"
 End If
 
 Jump_Exit:   '<==●((3)
 Application.EnableEvents = True
 End Sub
 
 
 >Application.EnableEvents = False
 について、正しく理解しておく必要があるように思います。
 
 Application.EnableEvents = False
 
 を入れれば、それ以降のイベントが発せ発生しませんが、それ以後のコードを実行しないということではありません。
 
 Application.EnableEvents = False の意味をよく理解しておいてください。
 (ヘルプを見ておくと良いでしょう)
 
 
 >>又、どういう時にイベントを抑止したいのでしょう?
 >>今のコードだと
 >>Not Intersect(Target, Range("C7:C26")) Is Nothing =TRUE
 >>の時しかイベントの抑止は効かないようになってますが。
 > 当然人間がやることなので、見積の変更や失敗がありますので、内容をCLEARするときもありますが、その削除の仕方をC列を消すとその行全ての内容が消えるようにしました。
 > 問題は削除されたあとに4.〜6.のイベントが働いて不要な”0”がなぜかF〜P行まで記入されてしまうことです。
 
 上記の問題もクリアされていると思います。
 試してみてください。
 
 |  |