セル内容を変更する度にマクロ起動するのではマクロ起動方法にもよりますが、運用性が如何かと思いました。
VBAを標準モジュールに記述ではなくシートモジュールに記述することで、セル内容が変更されるとほぼ同時に斜線のオン/オフが出来るように考えてみました。
提示されたサンプルの場合なら、以下の二つのプロシジャをそのまままとめて、当該ワークシートのシートモジュールに転記すれば、そのまま動作すると思います。
Private Sub Worksheet_Change(ByVal Target As Range)
'対象セルが変更されたときに斜線のオン/オフを行う
If Target.Cells(1).Address = "$J$25" Then
Call myLineCtrl(Target, "斜線1")
ElseIf Target.Cells(1).Address = "$J$32" Then
Call myLineCtrl(Target, "斜線2")
ElseIf Target.Cells(1).Address = "$J$40" Then
Call myLineCtrl(Target, "斜線3")
ElseIf Target.Cells(1).Address = "$J$48" Then
Call myLineCtrl(Target, "斜線4")
ElseIf Target.Cells(1).Address = "$J$56" Then
Call myLineCtrl(Target, "直線コネクタ 4")
ElseIf Target.Cells(1).Address = "$AB$30" Then
Call myLineCtrl(Target, "斜線5")
ElseIf Target.Cells(1).Address = "$AB$44" Then
Call myLineCtrl(Target, "斜線6")
ElseIf Target.Cells(1).Address = "$CA$46" Then
Call myLineCtrl(Target, "斜線7")
'ElseIf Target.Cells(1).Address = "$??$??" Then
' Call myLineCtrl(Target, "斜線???")
'
'
'
End If
End Sub
Sub myLineCtrl(prmTarget As Range, prmShapeName)
'斜線の表示オン/オフを行うサブプロシジャ
If prmTarget.Cells(1).Value = "" Then
'当該セルが値が入っていないなら斜線を表示する
ActiveSheet.Shapes(prmShapeName).Visible = True
Else
'当該セルに値が入っていたら斜線を表示しない
ActiveSheet.Shapes(prmShapeName).Visible = False
End If
End Sub
補足
はじめのプロシジャのIf~Call~のセットで、判定対象とするセルの絶対アドレスと、そのときに制御されるシェイプ名をセットで指定します。
対象とするセルが結合セルの場合はその1番目(左上隅)のセルのアドレスを指定します。
シートモジュール :
VBAエディタ画面のVBProjectのシート名の部分をダブルクリックするとモジュール画面が開きます。
以上、お試しください。