John은 통합 문서의 다양한 워크 시트에서 일부 처리를 수행하는 매크로를 가지고 있습니다. 그는 매크로 시작 부분에서 사용자가 선택한 셀 범위 (또는 단일 셀)를 저장하려고합니다. 그는 ActiveCell.Address를 사용하여이를 확인합니다. 그런 다음 매크로 끝에서 원래 선택한 것과 동일한 범위를 선택한 사용자에게 돌아 가려고합니다.

문제는 사용자가 시작한 위치와 완전히 다른 워크 시트에서 매크로를 완료 할 수 있으며 ActiveCell.Address는 워크 시트 이름이 아닌 셀 주소 만 제공하며 범위는 제공하지 않는다는 것입니다. John은 매크로 끝에서 사용자의 원래 위치로 돌아갈 수 있도록 필요한 항목을 저장하는 가장 좋은 방법에 대해 궁금해합니다.

누군가가 시작한 곳으로 돌아갈 수있는 최상의 기회를 위해 통합 문서, 워크 시트 및 셀의 세 가지 요소가 있습니다. 실제로,이 마지막 요소 (셀)는 사용자가 항상 셀을 선택 (ActiveCell.Address가 반환하는 것) 할 것이기 때문에 약간 단순 할 수 있지만 추가로 범위를 선택할 수 있습니다.

네 가지 항목을 모두 얻는 방법은 다음과 같습니다.

Dim rngOrigSelection As Range Dim rngOrigCell As Range Dim sOrigWS As String Dim sOrigWB As String

Set rngOrigSelection = Selection Set rngOrigCell = ActiveCell sOrigWS = ActiveSheet.Name sOrigWB = ActiveWorkbook.Name

나중에 사용자를 원래 위치로 되돌리려면 다음 유형의 코드를 사용할 수 있습니다.

Workbooks(sOrigWB).Activate Sheets(sOrigWS).Select rngOrigSelection.Select rngOrigCell.Activate

물론 Excel에는 항상 주어진 작업을 수행 할 수있는 여러 가지 방법이 있습니다. 이 경우 활성 셀과 선택한 범위 만 기억하여 코드를 줄일 수 있습니다.

Dim rngOrigSelection As Range Dim rngOrigCell As Range

Set rngOrigSelection = Selection Set rngOrigCell = ActiveCell

사용자를 해당 위치로 복원하려면 VBA에서 사용할 수있는 Parent 개체에 의존합니다.

rngOrigSelection.Parent.Parent.Activate rngOrigSelection.Parent.Select rngOrigSelection.Select rngOrigCell.Activate

저장 한 선택 범위의 부모 개체는 해당 범위가있는 워크 시트이고 해당 부모 개체의 부모는 워크 시트가있는 통합 문서입니다.

또 다른 방법은 사용자가 선택한 항목을 참조하는 명명 된 범위를 매크로 내에서 간단히 만드는 것입니다.

ActiveWorkbook.Names.Add Name:="MyOrigPlace", RefersTo:=Selection

처리를 마친 후 사용자가 선택한 항목으로 돌아갈 준비가되면 다음 코드를 사용합니다.

Application.Goto Reference:="MyOrigPlace"

ActiveWorkbook.Names("MyOrigPlace").Delete

첫 번째 줄은 선택 항목으로 돌아가고 두 번째 줄은 명명 된 범위를 삭제합니다. 이 방법의 유일한 단점은 활성 셀이 유지되지 않는다는 것입니다. 이 코드는 범위의 왼쪽 위 셀이 완료되면 활성 셀이되기를 원한다고 가정합니다. 처리 과정에서 명명 된 범위를 구성하는 셀을 삭제하면 코드가 제대로 작동하지 않을 수 있습니다. Excel은 더 이상 존재하지 않는 위치로 이동할 수 없습니다.

물론 매크로를 올바르게 코딩하면 위치를 전혀 기억할 필요가 없습니다. VBA를 사용하면 워크 시트와 통합 문서의 다른 영역을 “이동”하고 선택할 수 있지만 대부분의 경우이 작업은 필요하지 않습니다. 예를 들어 현재 선택 또는 활성 셀을 변경하지 않고 단순히 다른 범위로 작업 한 다음 해당 범위에 대한 작업을 수행 할 수 있습니다. 실제로 VBA를 사용하면 실제로 셀을 선택할 필요없이 셀을 변경, 서식 변경, 정렬, 삭제하고 상상할 수있는 거의 모든 작업을 수행 할 수 있습니다.

_ 참고 : _

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

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

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

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

link : / excel-Storing_a_Users_Location_before_Running_a_Macro [매크로 실행 전 사용자 위치 저장].