Lawrence는 워크 시트의 이름이 변경된 경우에도 워크 시트의 수를 결정하는 방법이 필요합니다. 예를 들어, 워크 시트의 이름이 Sheet11이면 시트 11이라는 것을 쉽게 알아낼 수 있습니다. 시트의 이름을 1 월로 바꾼 경우에도 로렌스는 이것이 시트 11임을 알 수있는 방법이 여전히 필요합니다.

이 문제에 대한 해결책은 사용자 정의 함수 (매크로)를 사용하는 것이 가장 좋습니다. 실제로 매크로가 각 워크 시트에 대해 반환 할 수있는 두 개의 숫자가 있습니다. 첫 번째는 워크 시트의 색인 번호입니다. 이 숫자는 Worksheets 컬렉션에있는 워크 시트의 Worksheet 개체 인덱스를 나타냅니다. 이 값은 다음과 유사한 매크로에 의해 반환 될 수 있습니다.

Function SheetNumber1(shtname As String)

Dim sht As Worksheet

Application.Volatile     For Each sht In ThisWorkbook.Worksheets          If LCase(sht.Name) = LCase(shtname) Then               SheetNumber1 = sht.Index               Exit Function          End If     Next     SheetNumber1 = -1 End Function

이 함수는 워크 시트에서 사용될 때 이름이 함수에 전달 된 워크 시트의 인덱스 번호를 반환합니다. 함수에 전달 된 이름이 워크 시트 컬렉션에 없으면 함수에서 값 -1을 반환합니다. 예를 들어, 셀에 사용 된 다음은 컬렉션 내에서 “January”라는 워크 시트의 인덱스 값을 반환합니다.

=SheetNumber("January")

이 방법의 문제점은 Worksheets 컬렉션에서 Worksheet 개체의 순서가 시간이 지남에 따라 변경 될 수 있다는 것입니다. 따라서 컬렉션의 11 번째 시트가 원래 Sheet11이었던 시트라고 항상 가정 할 수는 없습니다.

워크 시트의 원래 이름을 알아내는보다 일관된 방법 (이름 변경 방법에 관계없이)은 Visual Basic에서 시트의 “CodeName”이라고 부르는 것을 사용하는 것입니다. 이것은 워크 시트의 속성이며 다음과 같은 방식으로 결정할 수 있습니다.

Function SheetNumber2(shtname As String)

Dim sht As Worksheet     Dim sTemp As String

Application.Volatile     For Each sht In ThisWorkbook.Worksheets          If LCase(sht.Name) = LCase(shtname) Then               sTemp = sht.CodeName               SheetNumber2 = Val(Mid(sTemp, 6, 4))

Exit Function          End If     Next     SheetNumber2 = -1 End Function

CodeName 속성은 매크로에서 읽기 전용입니다. 워크 시트가 작성 될 때 지정되지만 Visual Basic 편집기에서 수동으로 변경할 수 있습니다. CodeName은 항상 워크 시트에 적용된 첫 번째 이름을 나타내는 문자열이므로 “Sheet11″과 같은 형식이됩니다. CodeName이 설정되면 워크 시트의 이름이 변경 되어도 (예 : “1 월”) 안정적으로 유지됩니다 ( “Sheet11”).

매크로 예제 (SheetNumber2)에서 CodeName 속성은 sTemp 변수에 할당됩니다. 대부분의 경우 “Sheet3″또는 “Sheet11″과 같은 형식입니다. 따라서 매크로는 6 번째 문자 ( “Sheet”바로 뒤)로 시작하는 숫자 값을 가져옵니다. 이것은 함수가 반환하는 값입니다.

_ 참고 : _

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

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

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

이 팁 (3398)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다. 여기에서 Excel (Excel 2007 이상)의 리본 인터페이스에 대한이 팁의 버전을 찾을 수 있습니다.

link : / excelribbon-Determining_a_Worksheets_Number [워크 시트 번호 결정].