Just sandwich your Worksheet_Change
event with Application.EnableEvents=False/True
:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
addrow
Application.EnableEvents = True
End Sub
The reason is simple - when Worksheet_Change
event inserts new row, it changes the content of the sheet, triggering Worksheet_Change
event again. Worksheet_Change
event insert new row again, and so on. Infinity loop:)
Btw, the best practice is to use error handling (it sets back Application.EnableEvents = True
even if error occurs in addrow
subroutine):
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrorHandler
Application.EnableEvents = False
addrow
ExitHere:
Application.EnableEvents = True
Exit Sub
ErrorHandler:
Resume ExitHere
End Sub