John은 VBA에 사용자가 변경 한 마지막 셀을 식별하는 방법이 있는지 궁금합니다. 그는 셀이 매크로에 의해 변경되었는지, 특히 사용자에 의해 변경되었는지 알고 싶어하지 않습니다.

대답은 ‘예’입니다. Worksheet_Change 이벤트를 사용하여 워크 시트의 특정 셀이 변경 될 때 기록 할 처리기를 작성할 수 있습니다. 이를 수행하는 매크로는 다음과 같이 다소 간단 할 수 있습니다.

Private Sub Worksheet_Change(ByVal Target As Range)

Application.StatusBar = Target.Address End Sub

매크로는 단순히 마지막 변경의 주소를 상태 표시 줄에 넣습니다. 다음과 같은 방식으로 전역 변수 (이벤트 핸들러 외부에서 선언 됨)에 주소를 유지하도록 매크로를 수정할 수 있습니다.

Dim sAddr As String

Private Sub Worksheet_Change(ByVal Target As Range)

sAddr = Target.Address(False, False)

End Sub

그런 다음 일반 매크로를 사용하여 sAddr 변수에 저장된 주소를 검색하고 원하는대로 수행 할 수 있습니다.

이벤트 처리기가 매크로에 의해 수행 된 변경 사항을 기록하지 않도록하는 유일한 방법은 워크 시트를 수정하는 매크로 명령을 실행하기 전에 이벤트 처리를 끄는 것입니다. 예를 들어 A1 셀의 내용을 변경하는 명령 전후에 다음 EnableEvents 속성 변경을 사용할 수 있습니다.

Application.EnableEvents = False Range("A1") = "Hello"

Application.EnableEvents = True

이벤트 처리를 해제하면 Worksheet_Change 이벤트 처리기가 트리거되지 않고 “마지막 변경된”주소가 업데이트되지 않습니다. 결과적으로 매크로에 의한 변경이 아니라 사용자가 변경 한 내용 만 추적하게됩니다.

_ 참고 : _

이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (11475)은 Office 365의 Microsoft Excel 2007, 2010, 2013, 2016, 2019 및 Excel에 적용됩니다. 여기에서 Excel의 이전 메뉴 인터페이스에 대한이 팁 버전을 찾을 수 있습니다.

link : / excel-Identifying_the_Last_Cell_Changed_in_a_Worksheet [Identifying the Last Cell Changed in a Worksheet].