Excel 시트의 이름을 바꿀 때 VBA 코드를 실행하는 가장 좋은 방법은 무엇입니까?Excel에서 워크 시트 이름 바꾸기
답변
여기에 한 가지 방법입니다. 트릭은 전용 클래스를 통해 응용 프로그램 수준에서 이벤트를 트랩하는 것입니다. SheetActivate 이벤트를 사용하여 활성 시트 및 해당 이름에 대한 참조를 저장합니다. 시트가 비활성화되고 다른 활성화 된 경우 시트 참조의 이름과 저장된 문자열을 비교합니다. 통합 문서 오픈 이벤트를 사용하여 글로벌 변수
Option Explicit
Private WithEvents xl As Application
Private CurrSheet As Worksheet
Private CurrSheetName As String
Private Sub Class_Initialize()
Set xl = Excel.Application
Set CurrSheet = ActiveSheet
CurrSheetName = CurrSheet.Name
End Sub
Private Sub Class_Terminate()
Set xl = Nothing
End Sub
Private Sub xl_SheetActivate(ByVal Sh As Object)
If CurrSheetName <> CurrSheet.Name Then
Debug.Print "You've renamed the sheet: " & CurrSheetName & " to " & CurrSheet.Name
' Do something here - rename the sheet to original name?
End If
Set CurrSheet = Sh
CurrSheetName = CurrSheet.Name
End Sub
인스턴스화이 : 사용자가 다른 워크를 선택하는 경우에만
가Public xlc As CExcelEvents
Sub Workbook_Open()
Set xlc = New CExcelEvents
End Sub
예는 상기 트리거 여기서 클래스 (호출 CExcelEvents)가있다. 더 자세한 내용을 원하면 Sheet Change 이벤트도 모니터링하십시오.
많은 검색을 통해 찾지 못했기 때문에 열심히 답변을 기다리고 있습니다. 내가 찾은 워크 시트에는 이름 바꾸기 이벤트가 없으므로 대체 접근 방식을 강요 받고 있습니다.
제가 가장 잘 보았던 것은 (끔찍한) 시트를 읽기 전용 또는 보이지 않게하여 이름 바꾸기를 금지 한 다음 이름 바꾸기를 수행하는 고유 한 도구 모음이나 단추를 제공하는 것입니다. 매우 못생긴 사용자가 그것을 싫어합니다.
Office 도구 모음에서 이름 바꾸기 메뉴 항목을 사용할 수 없지만 탭을 두 번 클릭하고 이름을 바꾸지 못하는 응용 프로그램을 보았습니다. 또한 매우 못생긴 사용자가 그것을 싫어합니다.
행운을 빌어 사람들이 더 좋은 대답을 찾길 바랍니다.
Application 개체를 사용하는 경우에도이를 처리 할 이벤트가 없습니다. 얼마나 짜증나.
워크 시트의 시작 값을 저장하고 가능하면 많은 이벤트를 검사하여 캡처하려고 시도합니다. 이는 해킹입니다.
다음은 저에게 효과적이었습니다. 희망이 도움이됩니다. 에서 ThisWorkbook 모듈에서
는 :Private strWorksheetName As String
Private Sub Workbook_Open()
strWorksheetName = shtMySheet.Name
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call CheckWorksheetName
End Sub
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Call CheckWorksheetName
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Call CheckWorksheetName
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Call CheckWorksheetName
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Call CheckWorksheetName
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Call CheckWorksheetName
End Sub
Private Sub CheckWorksheetName()
'If the worksheet has changed name'
If shtMySheet.Name <> strWorksheetName Then
DoSomething
End If
End Sub
- 1. Excel에서 워크 시트 함수를 Excel에서 호출합니다.
- 2. Excel에서 워크 시트 보호 해제 이벤트 트랩
- 3. PHP + 다운로드 Excel로 - 워크 시트 이름>
- 4. Excel에서 CSV로 시트 내보내기
- 5. 워크 시트를 CSV로 저장 Excel에서
- 6. C#을 사용하여 Excel에서 여러 워크 시트 생성
- 7. 지도 Excel 워크 시트 열
- 8. Excel 매크로 여러 워크 시트 (워크 시트 이름 포함)의 데이터를 구문 분석합니다.
- 9. Excel에서 여러 워크 시트를 만드는 방법은 무엇입니까?
- 10. 이름 바꾸기
- 11. 워크 시트 C#
- 12. Oracle sql 워크 시트
- 13. 워크 시트 _ 새 시트 코드 활성화
- 14. 대량으로 sed를 사용하여 이름 바꾸기
- 15. C#을 사용하여 Excel에서 다른 워크 시트의 이름 범위에서 유효성 검사를 만드는 방법은 무엇입니까?
- 16. OpenXML을 사용하여 열의 시트 데이터를 Excel에서 읽어들입니다.
- 17. Excel 2007 : Excel에서 데이터 유효성 시트 셀
- 18. Excel에서 복사 된 시트 이름을 변수로 할당합니다.
- 19. VBA Excel에서 시트 목록을 인쇄하는 방법
- 20. LinQ를 사용하여 Excel 워크 시트 쿼리 - LinQToExcel
- 21. PostgreSQL - 데이터베이스 이름 바꾸기
- 22. NSMutableDictionary에서 키 이름 바꾸기
- 23. 자바에서 파일 이름 바꾸기
- 24. Sharepoint 문서 이름 바꾸기
- 25. serializable 클래스의 이름 바꾸기
- 26. 리포지토리 폴더 이름 바꾸기
- 27. 파일론 컨트롤러의 이름 바꾸기
- 28. 정규식 이름 바꾸기
- 29. 디렉토리 이름 바꾸기
- 30. mysql 이름 바꾸기 결과?
더 이상 작동하지 않습니다. – plocks
시트 이름이 바뀔 때 발생하는 Excel 2016에서 유일한 이벤트는 Application.AfterCalculate입니다. 접근 방식은 대략 동일합니다 : 워크 시트 개체와 현재 이름의 매핑을 유지하고이 이벤트 동안 모든 개체를 교차 확인하십시오. – nicholas