You could use the Workbook_SheetChange Event. Put the code in the workbook module. Then there is no need to copy any code it all. 
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
   If Target.Address = "$D$10" Then
       Call mymacro
   End If
End Sub
EDIT If you need to prevent the code from running on certain sheets you could add the follwoing function
Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
    On Error Resume Next ' Invalid Parameters passed, IsInArray will be defaulted to FALSE
    IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
End Function
and change the Workbook_SheetChange Event to
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim shArr() As Variant
    'Example, mymacro will not run on the sheets "Overview" and "Total"
    shArr = Array("Overview", "Total")
    If Not IsInArray(Sh.Name, shArr) Then
        If Target.Address = "$D$10" Then
            Call mymacro
        End If
    End If
End Sub