Vba를 사용하여 시트가 존재하는지 확인하는 방법은 무엇입니까?
시트를 생성, 삭제, 이동, 복사하려면 해당 시트의 존재 여부를 알아야 합니다.
시트가 존재하는지 여부를 확인하는 코드를 작성하려면 통합 문서의 각 시트를 통과하고 제공한 이름과 일치하는 루프가 필요합니다. 하지만 여기에 문제가 있습니다. 이를 위해 두 개의 서로 다른 루프( For Next 및 For Each )를 사용할 수 있으며 오늘은 두 가지를 모두 사용하겠습니다.
이 튜토리얼에서는 이를 수행하는 다양한 방법을 살펴보겠습니다. 따라서 리본에 개발자 탭이 있는지 확인하고 VBA 편집기를 열어 이 코드를 작성하세요.
현재 통합 문서에 시트가 있는지 확인
이 루프를 사용하면 통합 문서의 모든 시트를 참조하고 시트 이름을 검색하려는 시트 이름과 일치하도록 하나씩 반복할 수 있습니다.
다음과 같이하세요:
- 먼저 루프 실행 시 시트에 사용할 변수와 검색하려는 시트 이름을 저장할 변수를 선언합니다.

- 다음으로 검색하려는 시트의 이름을 입력하는 입력 상자에 대한 코드 줄을 작성합니다.

- 그런 다음 For Each 키워드를 사용하여 루프를 시작합니다. 그리고 해당 변수를 사용하여 통합 문서의 각 워크시트를 참조합니다.

- 여기에서 IF THEN ELSE 문을 작성하여 시트 이름을 입력 상자에 입력한 이름과 일치시킨 다음, 일치하는 항목이 발견되면 메시지 상자를 표시하고 절차를 종료해야 합니다.

- 마지막에는 일치하는 항목이 없을 경우 이를 알리는 메시지 상자가 표시됩니다.

유용한 링크: 매크로 실행 – 매크로 레코더 – Visual Basic Editor – 개인용 매크로 핸드북
전체 코드:
Sub vba_check_sheet() Dim sht As Worksheet Dim shtName As String shtName = InputBox(Prompt:="Enter the sheet name", _ Title:="Search Sheet") For Each sht In ThisWorkbook.Worksheets If sht.Name = shtName Then MsgBox "Yes! " & shtName & " is there in the workbook." Exit Sub End If Next sht MsgBox "No! " & shtName & "is not there in the workbook." End Sub작동 방식을 설명하겠습니다. 이 코드를 실행하면 검색하려는 시트 이름을 입력하라는 메시지가 나타납니다.
그 후 각 시트를 거쳐 입력한 이름과 이름이 일치하는지 확인하고, 이름이 시트와 일치하면 하나의 메시지를 표시하고, 일치하는 항목이 없으면 다른 메시지를 표시합니다.
시트가 존재하는지 여부를 확인하는 또 다른 코드는 다음과 같습니다.
Sub vba_check_sheet() Dim sht As Worksheet Dim shtName As String Dim i As Long i = Sheets.Count shtName = InputBox(Prompt:="Enter the sheet name", _ Title:="Search Sheet") For i = 1 To i If Sheets(i).Name = shtName Then MsgBox "Yes! " & shtName & " is there in the workbook." Exit Sub End If Next i MsgBox "No! " & shtName & " is not there in the workbook." End Sub이 코드는 FOR NEXT 루프를 사용하고 통합 문서의 총 시트 수를 사용하며 이를 기반으로 입력한 이름과 이름이 일치하는 각 시트를 반복합니다.
닫힌 통합 문서에 시트가 있는지 확인
다음 코드에는 닫힌 통합 문서에서 시트 이름을 검색하는 루프가 있습니다. 파일을 참조하기 위해 파일 주소를 사용했습니다.
Sub vba_check_sheet() Dim wb As Workbook Dim sht As Worksheet Dim shtName As String shtName = InputBox(Prompt:="Enter the sheet name", _ Title:="Search Sheet") Application.ScreenUpdating = False Set wb = Workbooks.Open _ ("C:UsersDellDesktopsample-file.xlsx") For Each sht In wb.Worksheets If sht.Name = shtName Then wb.Close SaveChanges:=True MsgBox "Yes! " & shtName & " is there in the workbook." _ , vbInformation, "Found" Exit Sub End If Next sht Application.ScreenUpdating = False MsgBox "No! " & shtName _ & " is not there in the workbook.", _ vbCritical, "Not Found" End Sub이 매크로를 실행하면 화면 업데이트를 비활성화했을 때 뒤에서 파일이 열리고 모든 시트를 통과하면 화면 업데이트를 활성화하는 코드가 생깁니다. ‘화면.
참고: 보시다시피 파일 위치 주소에는 파일 확장자가 있습니다. 즉, 이를 참조하려면 올바른 파일 확장자가 있어야 합니다.
관련 튜토리얼
- Excel에서 VBA를 사용하여 전체 시트 지우기
- VBA를 사용하여 Excel에서 시트 복사 및 이동
- Excel에서 VBA를 사용하는 시트 COUNT개
- Excel에서 VBA를 사용하여 시트 삭제
- Excel에서 VBA를 사용하여 시트 숨기기 및 표시