Tim은 사용자가 워크 시트 탭을 마우스 오른쪽 단추로 클릭 한 다음 코드보기를 선택하여 워크 시트에 대한 VBA 코드 시트를 열 수 있음을 올바르게 인식합니다. 그는 셀, 열 및 행을 자동으로 조작하는 코드를 작성했습니다. 이 코드는 사용자가 새 워크 시트를 추가하더라도 통합 문서의 모든 워크 시트에서 사용할 수 있어야합니다. Tim은 VBA를 사용하여 한 워크 시트의 코드를 통합 문서의 새 워크 시트에 자동으로 복사하는 방법이 있는지 궁금합니다.

이 문제에 접근 할 수있는 몇 가지 방법이 있습니다. 가장 간단한 방법은 워크 시트의 코드 시트에서 매크로를 제거하고 ThisWorkbook 모듈로 이동하는 것입니다. 워크 시트의 코드 시트는 워크 시트 탭을 마우스 오른쪽 단추로 클릭하면 표시됩니다. 해당 시트의 코드는 워크 시트 및 해당 워크 시트에서만 발생하는 이벤트를 처리하기위한 것입니다. 코드를 ThisWorkbook 모듈로 이동하면 이벤트를 계속 처리 할 수 ​​있지만 이러한 이벤트는 통합 문서의 모든 워크 시트에 적용됩니다.

예를 들어 워크 시트 탭을 마우스 오른쪽 단추로 클릭하고 코드 창을 보면 처음에는 Worksheet_SelectionChange 이벤트에서 작업하는 것입니다. 이 코드를 ThisWorkbook 모듈로 이동하려면 Workbook_SheetSelectionChange 이벤트에 배치 할 수 있습니다.

코드의 “레벨 변경”이 어떤 이유로 작동하지 않는 경우 다른 방법은 통합 문서 내에 템플릿 워크 시트를 만드는 것입니다.

“MyMaster”와 같은 이름을 지정하고 새로 만든 워크 시트에 추가 할 모든 코드가 포함되어 있는지 확인합니다. 원하는 경우이 워크 시트를 숨길 수도 있으므로 사용자의주의를 분산시키지 않습니다. 그런 다음 ThisWorkbook 모듈에 다음 매크로를 배치합니다.

Private Sub Workbook_NewSheet(ByVal Sh As Object)

Dim tmpName As String

tmpName = Sh.Name     Sheets("MyMaster").Copy Before:=Sheets(Sh.Name)

Application.DisplayAlerts = False     Sheets(Sh.Name).Delete     Application.DisplayAlerts = True     Sheets("MyMaster (2)").Name = tmpName End Sub

이 코드는 통합 문서에 새 워크 시트가 추가 될 때마다 트리거됩니다. 새로 추가 된 워크 시트의 이름 ( “Sheet4″와 같은 이름)을보고 해당 이름을 임시 변수에 저장합니다.

그런 다음 코드는 MyMaster 워크 시트를 통합 문서에 복사하고 (워크 시트의 매크로도 복사 함) 원래 만든 워크 시트를 삭제 한 다음 원본 워크 시트와 동일한 이름을 갖도록 새 MyMaster 복사본의 이름을 바꿉니다.

_ 참고 : _

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

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

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

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

link : / excel-Copying_Worksheet_Code_Automatically [자동으로 워크 시트 코드 복사].