Lucas
You need to be careful when you have a macro in the Worksheet_Change event which changes the sheet - because your macro will trigger itself so you get a looping effect. If you remove the error handler in your code you'll notice that it debugs on the line:
Range("E" & r - 1).Copy Range("E" & r)
This is your macro's calling of itself, not your own calling of it.
To get around this, you need to stop the macro from running after you've requested it - I've declared a public string (varCancelChange) in module 1 and added the extra lines. Perhaps others have a better way of solving the problem....
Dion
Private Sub Worksheet_Change(ByVal Target As Range)
If varCancelChange = "Yes" Then
Exit Sub
End If
varCancelChange = "Yes"
Dim r As Long
On Error GoTo ErrorTrap
r = Target.Row
Call UnprotectSheet
Select Case Target.Column
Case Is = 1
Range("C" & r - 1).Copy Range("C" & r)
Range("E" & r - 1).Copy Range("E" & r)
Range("H" & r - 1).Copy Range("H" & r)
End Select
ErrorTrap:
Call ProtectSheet
varCancelChange = ""
End Sub
Bookmarks