VBA 매크로 / 코드의 통합 문서에서 생성 또는 삭제 한 워크 시트가 존재하는지 확인해야 할 때가 있습니다. 함수 / 매크로를 사용하여 쉽게 할 수 있습니다. 워크 시트가 있는지 확인하는 방법에는 여러 가지가 있습니다 .

이 기사에서는 다음과 같은 방법을 다룰 것입니다.

{비어 있음} 1. UDF로 알려진 사용자 정의 함수 2. 메시지 상자를 통한 하위 루틴

첫 번째 옵션 : 사용자 정의 함수

다음 스냅 샷에는 시트 이름이 거의 없으며 A 열의 시트 이름이 있는지 확인합니다.

img1

특정 시트가 있는지 확인하려면 아래 단계에 따라 VB 편집기를 시작해야합니다. 개발자 탭을 클릭합니다. 코드 그룹에서 Visual Basic을 선택합니다.

img2

  • 표준 모듈에 아래 코드 복사

Option Explicit

Function WorksheetExists(ByVal WorksheetName As String) As Boolean

Dim Sht As Worksheet

For Each Sht In ThisWorkbook.Worksheets

If Application.Proper(Sht.Name) = Application.Proper(WorksheetName) Then

WorksheetExists = True

Exit Function

End If

Next Sht

WorksheetExists = False

End Function

img3

확인하기 위해 B2 셀의 UDF를 = WorksheetExists (A2)

img4

로 사용합니다. * 위 이미지에서“MasterSheet”는 샘플 워크 북에 없습니다. 따라서 수식은 거짓으로 답을주었습니다

코드 설명 :

이 함수는 다른 활동을 수행하는 매크로에서 “WorksheetName”값을 가져옵니다. 코드에 따라 변경해야하는 경우 가능합니다.

For Each Sht In ThisWorkbook.Worksheets 및 _Next Sht_는 각각 루프의 시작 및 끝 부분입니다.

Then If Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Then _ WorksheetExists = True_ 시트 이름이 주 매크로에서 전달 된 시트 이름과 일치하는지 확인합니다. 그렇다면 WorksheetExists는 True이고 함수를 종료 할 수 있습니다. 그렇지 않으면 WorksheetExists = False가 주 매크로로 다시 반환됩니다. 루프는 모든 시트가 확인 될 때까지 첫 번째 시트에서 다음 시트로 이동합니다.

SecondOption : 메시지 상자를 통한 하위 루틴

UDF를 호출하는 일반 서브 루틴을 가질 수 있으며 지정된 시트가 발견되면 메시지 상자에 ‘시트가 있음’이 표시됩니다. 찾을 수없는 경우 ‘시트를 찾을 수 없음’이라는 메시지 상자가 나타납니다.

확인하기 위해 표준 모듈에 다음 코드를 복사합니다.

Function WorksheetExists2(WorksheetName As String, Optional wb As Workbook) As Boolean

If wb Is Nothing Then Set wb = ThisWorkbook

With wb

On Error Resume Next

WorksheetExists2 = (.Sheets(WorksheetName).Name = WorksheetName)

On Error GoTo 0

End With

End Function

Sub FindSheet()

If WorksheetExists2("Sheet1") Then

MsgBox "Sheet1 is in this workbook"

Else

MsgBox "Oops: Sheet does not exist"

End If

End Sub

img5

“FindSheet”매크로를 실행 한 후 시트가있는 경우 다음 메시지 상자가 표시됩니다.

img6

Sheet가 없으면 다음 메시지 상자가 표시됩니다.

img7

마찬가지로 시트가 존재하는지 확인하고 그 후에 특정 작업을 수행하는 간단한 IF 루프를 가질 수 있습니다.

Sub test()

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets

If ws.Name <> "Main" Then

ws.Range("A1").Value = ws.Name

Else

ws.Range("A1").Value = "MAIN LOGIN PAGE"

End If

Next ws

End Sub

img8

위의 매크로를 테스트하려면 시트 이름 “Main”을 만들어야합니다. 이 매크로는 매우 간단합니다. 통합 문서의 각 워크 시트를 반복합니다. 그런 다음 워크 시트 이름이 MAIN이 아닌지 확인합니다. MAIN이면 해당 시트의 A1에 “MAIN LOGIN PAGE”와 같은 텍스트를 표시하고, 그렇지 않으면 이름을 표시합니다. A1 셀의 시트

img9

이것은 시트가 있는지 확인하는 또 다른 방법입니다. 존재하는 경우 작업 A를 수행하고 그렇지 않은 경우 작업 B를 수행합니다. 결론 : * 통합 문서에 시트가 있는지 여부를 확인할 수 있습니다. 편의에 따라 UDF 또는 서브 루틴을 사용할 수 있습니다.

image 48

_ 블로그가 마음에 들면 Facebook에서 친구들과 공유하세요. Twitter와 Facebook에서도 팔로우 할 수 있습니다 ._

_ 우리는 여러분의 의견을 듣고 싶습니다. 우리가 작업을 개선, 보완 또는 혁신하고 더 나은 서비스를 제공 할 수있는 방법을 알려주십시오. [email protected]_로 문의 해주세요