Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim chartCopied As Boolean
If Target.CountLarge > 1 Then Exit Sub
If Target.Address <> "$B$2" Then Exit Sub
Const CHART_NAME As String = "MyChart" 'change the name as desired
On Error Resume Next
Me.ChartObjects(CHART_NAME).Delete
On Error GoTo 0
If Len(Target.Value) > 0 Then
chartCopied = False
If Target.Value > 8363 Then
ThisWorkbook.Worksheets("Sheet1").ChartObjects("Chart 1").Copy
Me.Paste Me.Range("D2")
chartCopied = True
ElseIf Target.Value >= 0 Then
ThisWorkbook.Worksheets("Sheet1").ChartObjects("Chart 2").Copy
Me.Paste Me.Range("D2")
chartCopied = True
End If
If chartCopied = True Then
With Me
.ChartObjects(.ChartObjects.Count).Name = CHART_NAME
End With
End If
End If
End Sub