목록을 기반으로 워크 시트 이름 바꾸기 (Microsoft Excel)
Gilbert에는 A1 : A12 셀에 원하는 워크 시트 이름 목록이 포함 된 워크 시트 ( “Control”)가 있습니다. 그는 매크로에서 해당 셀 범위를 기반으로 통합 문서에있는 다른 12 개의 워크 시트 각각의 이름을 바꿀 수있는 방법이 필요합니다. 워크 시트 이름은 동적 일 필요가 없습니다. 매크로를 실행할 때 이름 만 변경하면됩니다.
이러한 요구를 해결하기위한 매크로 개발의 핵심은 이름을 바꾸려는 각 워크 시트의 Name 속성에 의존하는 것입니다. 예를 들어 다음과 같은 매우 간단한 매크로를 사용할 수 있습니다.
Sub RenameSheets() Dim c As Range Dim J As Integer J = 0 For Each c In Range("A1:A12") J = J + 1 If Sheets(J).Name = "Control" Then J = J + 1 Sheets(J).Name = c.Text Next c End Sub
매크로는 단순히 A1 : A12 셀 범위를 단계별로 진행하며 다음 워크 시트의 이름이 “Control”이 아닌 경우 워크 시트의 이름을 셀 값으로 바꿉니다.
언급했듯이,이 매크로는 매우 단순하며 훨씬 더 강력해야합니다. 예를 들어 현재 통합 문서에 워크 시트가 13 개보다 많거나 적은 경우 어떻게해야합니까? A1 : A12 범위에 빈 셀이 있으면 어떻게해야합니까? 누군가 매크로를 실행하고 “컨트롤”이 활성 워크 시트가 아닌 경우 어떻게해야합니까?
A1 : A12에 동일한 값이 두 개 있으면 어떻게해야합니까? A1 : A12 범위에있는 하나 이상의 이름에 선행 또는 후행 공백이 있으면 어떻게됩니까? 이러한 질문과 다른 모든 질문이 최종적으로 매크로가 어떻게 보이는지에 영향을 미칠 수 있습니다. 다음은 방금 언급 한 몇 가지 가능성을 고려한 매크로의 주석 버전입니다.
Sub RenameSheets() Dim c As Range Dim J As Integer Dim K As Integer Dim sName As String Dim w(12) As String Dim bGo As Boolean Dim sTemp As String bGo = True If Worksheets.Count <> 13 Then ' Check to make sure exactly 13 worksheets in workbook bGo = False sTemp = "There are more than 13 worksheets." End If If ActiveSheet.Name <> "Control" Then ' Check to make sure Control is active bGo = False sTemp = "Control worksheet is not active." Else ' Check for empty and duplicate cells in range J = 0 For Each c In Range("A1:A12") sName = Trim(c.Text) If sName <> "" Then For K = 1 to J If LCase(w(K)) = LCase(sName) Then bGo = False sTemp = "Duplicate sheet names in list." End If Next K If bGo Then ' Everything still good; add name J = J + 1 w(J) = sName End If End If Next c End If If bGo Then K = 0 For J = 1 To 12 K = K + 1 If Sheets(K).Name = "Control" Then K = K + 1 Sheets(K).Name = w(J) Next J Else MsgBox(sTemp) End If End Sub
두 번째 버전의 매크로가 첫 번째 버전보다 얼마나 더 긴지 알 수 있습니까? 매크로에 여러 검사를 추가하기 시작할 때마다 검사가없는 것보다 훨씬 더 오래 걸릴 수 있습니다. 물론 검사를 추가 할 때의 이점은 다른 사람이 매크로를 사용하기 때문에 매크로가 문제가 발생할 가능성이 적다는 것입니다.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (1506)은 Microsoft Excel 2007, 2010, 2013 및 2016에 적용됩니다.