Prueba con esto
Private Sub Worksheet_Change(ByVal Target As Range)
'Por.DAM
If Not Intersect(Target, Range("M2")) Is Nothing Then
Application.EnableEvents = False
Nuevo_Codigo Target.Value
Application.EnableEvents = True
End If
End Sub
Con la instrucción Application.EnableEvents = False, apagas los eventos de la hoja, es decir, la macro hace actualizaciones a la hoja y no vuelve a entrar al evento worksheet_change. Tienes que poner Application.EnableEvents = False en cada una te tus hojas donde tienes worksheet_change justo antes de que empieces a seleccionar o actualizar celdas, después que terminaste de actualizar la hoja, deberás escribir: Application.EnableEvents = True, de esta forma los eventos se activan nuevamente para que la siguiente ves que modifiques la celda M2, se ejecute la macro.
Si por algún motivo se desactivan los eventos, crea una macro así y ejecutala:
Sub activar()
Application.EnableEvents = True
End Sub