통합 문서에서 서로 다른 워크 시트를 처리하는 매크로를 작성하는 경우 처리를 수행하기 전에 통합 문서에있는 워크 시트 유형을 파악해야 할 수 있습니다. 일부 VBA 명령은 특정 유형의 워크 시트에서만 작동하기 때문에 특히 중요 할 수 있습니다.

통합 문서에있는 워크 시트 유형을 파악하기 전에 Excel이 통합 문서를 구성하는 일부 개체를 내부적으로 저장하는 방법을 아는 것이 좋습니다. Excel은 Worksheets 컬렉션과 Charts 컬렉션을 모두 유지합니다. Worksheets 컬렉션은 워크 시트 개체로 구성되고 Charts 컬렉션은 차트 시트 개체로 구성됩니다.

차트 시트 개체는 전체 워크 시트를 차지하는 차트입니다. 워크 시트에 포함 된 개체는 포함되지 않습니다.

흥미롭게도 워크 시트 및 차트 시트 개체도 Sheets 컬렉션의 구성원입니다. 따라서 시트가 발생하는 순서대로 통합 문서를 처리하려면 Sheets 컬렉션을 단계별로 진행하는 것이 가장 쉽습니다. 이렇게하면 컬렉션 내 개별 개체의 Type 속성을 검사하여 개체 유형을 확인할 수 있습니다. Excel은 Sheets 컬렉션에 속할 수있는 두 가지 유형의 개체를 정의합니다.

xlWorksheet. * 이것은 일반 워크 시트입니다.

xlChart. * 차트입니다.

다음 두 가지 유형의 개체는 Microsoft Excel에서 계속 지원되지만 최신 버전의 Microsoft VBA로 마이그레이션하는 것이 좋습니다. (Excel 4.0 매크로 작업에 대한 자세한 내용은 아래 나열된 웹 페이지를 참조하십시오.) :

xlExcel4MacroSheet. * Excel 4.0에서 사용되는 매크로 시트입니다.

xlExcel4IntlMacroSheet. * Excel 4.0에서 사용되는 국제 매크로 시트입니다.

https://support.office.com/en-us/article/Working-with-Excel-4-0-macros-BA8924D4-E157-4BB2-8D76-2C07FF02E0B8

시트 유형 목록을 보는 것으로 충분하다고 생각할 수 있습니다. 그러나 흥미롭게도 Excel이 Type 속성에 대해 예상 한 값을 항상 반환하지는 않습니다. 대신 차트의 Type 속성을 검사하면 xlExcel4MacroSheet와 같은 값이 반환됩니다.

이로 인해 모든 매크로에 문제가 발생할 수 있습니다.

이 문제를 해결하는 방법은 Sheets 컬렉션의 각 항목 이름을 Charts 컬렉션의 항목과 비교하는 것입니다. 이름이 두 컬렉션에 모두 있으면 시트가 차트라고 가정하는 것이 안전합니다. 둘 다에 있지 않은 경우 추가 분석을 통해 워크 시트가 다른 유형 중 하나인지 확인할 수 있습니다. 다음 매크로 SheetType은 정확히이 프로세스를 따릅니다.

Sub SheetType()

Dim iCount As Integer     Dim iType As Integer     Dim sTemp As String     Dim oChart As Chart     Dim bFound As Boolean

sTemp = ""

For iCount = 1 To Sheets.Count         iType = Sheets(iCount).Type         sTemp = sTemp & Sheets(iCount).Name & " is a"



bFound = False         For Each oChart In Charts             If oChart.Name = Sheets(iCount).Name Then                 bFound = True             End If         Next oChart

If bFound Then             sTemp = sTemp & " chart sheet."

Else             Select Case iType                 Case xlWorksheet                     sTemp = sTemp & " worksheet."

Case xlChart                     sTemp = sTemp & " chart sheet."

Case xlExcel4MacroSheet                     sTemp = sTemp & "n Excel 4 macro sheet."

Case xlExcel4IntlMacroSheet                     sTemp = sTemp & "n Excel 4 international macro sheet"

Case Else                     sTemp = sTemp & "n unknown type of sheet."

End Select         End If         sTemp = sTemp & vbCrLf     Next iCount     MsgBox sTemp End Sub

매크로를 실행하면 통합 문서의 각 시트 이름과 시트 유형을 보여주는 단일 메시지 상자가 표시됩니다.

마지막으로이 코드는 통합 문서에있는 시트 유형을 알려줍니다. 어떤 유형의 통합 문서가 포함되어 있는지는 알려주지 않습니다. (즉, 매크로는 작업중인 Excel 버전을 신경 쓰지 않습니다.)

_ 참고 : _

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

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

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

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

link : / excel-Detecting_Types_of_Sheets_in_VBA [VBA에서 시트 유형 감지].