워크시트 이벤트 코드를 짜다 보면 맨 첫 줄에 거의 습관처럼 들어가는 문장이 있습니다.
If Target.CountLarge > 1 Then Exit Sub
여러 셀을 한꺼번에 고쳤을 때(붙여넣기, 행 삭제, Ctrl+Enter 일괄 입력 등)는 이벤트 처리를 건너뛰라는 뜻입니다. 예전 예제들은 같은 자리에 Target.Count 를 쓴 경우가 많은데, 엑셀 2007 이후로는 CountLarge 로 쓰는 게 안전합니다. 왜 그런지는 직접식 창(즉석창)에서 금방 확인할 수 있습니다.

즉석창에서 ? Cells.Count 를 치면 생기는 일
VBA 편집기에서 Ctrl+G로 직접 실행 창을 열고 ? Cells.Count 를 입력해 보세요. 엑셀 2003 이하에서는 시트 전체 셀 개수가 그대로 찍혔습니다. 그런데 2007 이상에서 같은 걸 해 보면 숫자 대신 오버플로 에러 창이 뜹니다.

원인은 데이터 형식입니다. Count 속성은 Long으로 값을 돌려줍니다. Long은 4바이트 정수라서 담을 수 있는 범위가 -2,147,483,648 ~ 2,147,483,647입니다.
엑셀 2003 시트는 65,536행 × 256열이라 전체 셀이 16,777,216개였고, 이건 Long 안에 넉넉히 들어갑니다. 2007부터는 시트가 1,048,576행 × 16,384열(XFD열까지)로 커졌고, 전체 셀 수는 17,179,869,184개가 됩니다. Long 최댓값의 여덟 배쯤 되는 숫자라 Count 로는 표현할 수가 없는 거죠.
그래서 2007 버전에 CountLarge 속성이 새로 들어왔습니다. 큰 값도 담을 수 있는 형식으로 돌려주기 때문에 ? Cells.CountLarge 를 실행하면 에러 없이 전체 셀 수가 나옵니다.

실제로 어디서 문제가 되나
평소에 몇십, 몇백 셀 범위의 개수를 셀 때는 Count 를 써도 아무 문제가 없습니다. 걸리는 건 범위가 Long 한계를 넘을 만큼 클 때입니다. 행 하나 전체가 1,048,576셀이니, 열 전체를 대략 2,048개 넘게 잡으면 한계를 넘어섭니다. 시트 전체(Cells)나 행 전체 범위가 그런 경우에 해당하죠.
문제는 이게 이벤트 안에서 일어날 때입니다. 사용자가 시트 왼쪽 위 모서리를 눌러 전체를 선택한 뒤 Delete 키를 누르면 Target 이 시트 전체가 됩니다. 이때 If Target.Count > 1 Then Exit Sub 는 비교하기도 전에 오버플로가 나서 매크로가 멈추고 디버그 창이 뜹니다. 사용자는 그냥 지웠을 뿐인데 에러 창을 보게 되니, 배포한 파일에서 이런 일이 생기면 꽤 곤란합니다. SelectionChange 이벤트도 같은 이유로 조심해야 합니다.
CountLarge 로 바꿔 두면 이런 경우에도 정상적으로 값을 받아 비교한 뒤 Exit Sub 로 빠져나갑니다. 엑셀 2003 이하에서 열어야 하는 파일이 아니라면 이벤트 코드의 셀 개수 검사는 처음부터 CountLarge 로 쓰는 쪽을 권합니다. 반대로 2003에서도 돌아야 하는 파일이라면 그 버전에는 CountLarge 가 없어서 컴파일 에러가 나니, 그 경우만 Count 를 유지하면 됩니다.