Hi Nicki
Try
[VBA]Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
If Target.Cells.Count = 1 And Target.Column = 7 Then
Target.EntireRow.Copy Destination:= _
Sheets("completed").Cells(Rows.Count, 2).End(xlUp).Offset(1, -1)
Target.EntireRow.Delete
End If
ActiveSheet.Protect
End Sub

[/VBA]
Regarding writing to the next line, check that there is always data in column B, if not, change the figures for a column which always has data. Note that 2 changes as are required
For column D
Sheets("completed").Cells(Rows.Count, 4).End(xlUp).Offset(1, -3)