Chris는 직장에서 여러 매크로가 포함 된 큰 워크 시트를 가지고 있습니다. 이 중 하나는 셀 블록을 삭제하고 나머지는 위로 이동합니다. 그러나 때때로 사용자는 매크로를 사용하지 않고 대신 수동으로 블록을 삭제합니다. 삭제로 인해 셀이 위쪽이 아닌 왼쪽으로 이동하면 재앙입니다.

Chris는 매크로를 사용하여 셀의 위쪽 이동을 강제하고 셀이 왼쪽으로 수동 이동하는 것을 방지하는 방법이 있는지 궁금합니다.

Excel의 많은 항목과 마찬가지로이 문제에 접근 할 수있는 여러 가지 방법이 있습니다. 최종적으로 선택되는 모든 접근 방식은 워크 시트에있는 정보의 특성과 허용하거나 허용하지 않을 내용에 따라 달라 지므로 여기서 세부 사항을 자세히 설명 할 수는 없습니다. 그러나 다음 섹션에서는 자신에게 가장 적합한 접근 방식을 선택하는 데 필요한 키를 제공 할 수 있습니다.

_ 워크 시트 보호 _

간단하고 효과적인 방법은 보호 할 수 있도록 워크 시트를 디자인하는 것입니다. 물론 사용자가 정보를 입력해야하는 모든 셀이 보호되지 않도록해야하지만 그렇지 않으면 매크로가 워크 시트가 활성화 될 때 보호되도록 할 수 있습니다.

이렇게하면 사용자가 워크 시트에서 셀을 수동으로 삭제할 가능성이 없습니다.

즉, 셀 범위를 삭제해야하는 경우 사용자가 (보호에 의해) 삭제를 위해 매크로를 선택해야합니다. 그런 다음 매크로는 워크 시트 보호를 해제하고 셀 범위를 삭제 한 다음 다시 보호 할 수 있습니다.

_ 삭제 차단 _

또 다른 매크로 기반 접근 방식은 BeforeDelete 이벤트를 사용하여 실제로 발생하는 작업을 제어하는 ​​것입니다. 다음은 실제로 사용하는 것의 기초가 될 수있는 간단한 이벤트 핸들러입니다.

Private Sub Worksheet_BeforeDelete()

Dim delRng As Range     Dim selRng As Range

On Error Resume Next     Set delRng = Range("C2:D5")  ' Change the range to the block                                  ' of cells to be deleted (manually                                  ' or by macro)

Set selRng = Application.Selection  ' Cells selected manually                                         ' by the user     If MyRng.Address = delRng.Address Then         Selection.Delete shift:=xlUp     End If End Sub

이벤트 핸들러는 삭제하려는 범위를 사용자가 삭제하도록 선택한 범위와 위쪽으로 만 비교합니다. 범위가 같으면 핸들러는 범위를 삭제하고 위로 이동합니다. 분명히 모니터링하려는 범위와 일치하도록 delRng 변수에 할당 된 범위를 변경해야합니다.

_ 삭제 키 다시 매핑 _

삭제와 관련하여 원하는대로 수행 할 수 있도록 Delete 키를 다시 매핑 할 수도 있습니다. ThisWorkbook 코드 모듈에 다음과 같은 매크로를 포함하기 만하면됩니다.

Private Sub Workbook_Open()

Application.OnKey "{DELETE}", "MyMacro()"

End Sub

즉, 통합 문서가 열리면 Delete 키가 다시 매핑되어 누를 때마다 MyMacro (원하는 매크로로 변경)가 자동으로 실행됩니다.

이 방법은 Delete 키를 누르는 경우에만 영향을 미칩니다. 다른 방식으로 수행 된 삭제에는 영향을주지 않습니다. 이를 위해 매크로는 여전히 논리를 예측하고 처리해야합니다.

_ 완벽한 접근 방식 _

그것은 우리에게 완전한 접근 방식을 제공합니다. 이 접근 방식은 단순히 사용자가 삭제를 시작할 수있는 모든 다양한 방법의 목록을 만든 다음 이러한 방법을 가로채는 것을 의미합니다. 목록 (및 차단)에는 Delete 키 처리와 같이 이미 논의 된 접근 방식 중 일부가 반드시 포함되어야합니다. 또한 사용자가 마우스 오른쪽 버튼을 클릭하거나 사용자가 리본에서 삭제 옵션을 선택할 때 발생하는 작업을 비활성화하거나 수정하는 방법을 파악해야합니다.

(사용자 인터페이스에서 삭제 관련 옵션을 제거 할 수도 있습니다.)

삭제 방법의 전체 목록을 정리하고 처리하기가 어려울 수 있으므로이 방법은 상당히 길 수 있습니다.

_ 참고 : _

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

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

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

이 팁 (13632)은 Office 365의 Microsoft Excel 2007, 2010, 2013, 2016, 2019 및 Excel에 적용됩니다.