Określ, czy arkusz istnieje w skoroszycie za pomocą VBA w programie Microsoft Excel

Anonim

Może się zdarzyć, że będziesz musiał sprawdzić, czy istnieje arkusz, który utworzyłeś lub usunąłeś w skoroszycie w makrze / kodzie VBA. Możemy to łatwo zrobić za pomocą funkcji / makra. Istnieje wiele sposobów sprawdzenia, czy arkusz istnieje.

W tym artykule omówimy następujące sposoby:

1. Funkcja zdefiniowana przez użytkownika znana jako UDF
2. Procedura podrzędna przez okno wiadomości

Pierwsza opcja: Funkcja zdefiniowana przez użytkownika

Poniższy zrzut zawiera kilka nazw arkuszy i sprawdzimy, czy nazwy arkuszy w kolumnie A istnieją.

Aby sprawdzić, czy dany arkusz istnieje, musimy wykonać poniższe kroki, aby uruchomić edytor VB

  • Kliknij kartę Deweloper
  • Z grupy Kod wybierz Visual Basic

  • Skopiuj poniższy kod w standardowym module
Option Explicit Function WorksheetExists(ByVal WorksheetName As String) As Boolean Dim Sht As Worksheet dla każdego Sht w ThisWorkbook.Worksheets If Application.Proper(Sht.Name) = Application.Proper(WorksheetName) Then WorksheetExists = True Zakończ funkcję End If Next Sht WorksheetExists = Funkcja fałszywego zakończenia 

  • W celu sprawdzenia użyjemy UDF w komórce B2 jako
  • = Arkusz istnieje(A2)

  • Na powyższym obrazku „MasterSheet” nie istnieje w naszym przykładowym skoroszycie; stąd formuła dała odpowiedź jako Fałsz

Wyjaśnienie kodu:

Ta funkcja pobiera wartość „WorksheetName” z makra wykonującego inne czynności. Jeśli chcesz to zmienić zgodnie z kodem, możesz.

Dla każdego Sht w ThisWorkbook.Worksheets oraz Następny Sht są odpowiednio początkową i końcową częścią pętli.

Następnie If Application.Proper(Sht.Name) = Application.Proper(WorksheetName) Then

Arkusz istnieje = Prawda

Sprawdza, czy nazwa arkusza jest zgodna z nazwą arkusza przekazaną z makra głównego. Jeśli tak, WorksheetExists ma wartość True i możemy wyjść z funkcji. W przeciwnym razie WorksheetExists = False jest zwracany z powrotem do głównego makra. Pętla przechodzi od pierwszego arkusza do następnego, aż wszystkie arkusze zostaną sprawdzone.

Druga opcja: podprogram poprzez okno wiadomości

Możemy mieć normalny podprogram, który wywołuje UDF i jeśli określony arkusz zostanie znaleziony, pojawi się okno komunikatu „arkusz istnieje”; jeśli nie znaleziono, wyskakuje msgbox, „sheet not found”.

Aby to sprawdzić, skopiujemy następujący kod do standardowego modułu:

Funkcja WorksheetExists2 (WorksheetExists As String, opcjonalnie wb As Workbook) jako Boolean Jeśli wb jest niczym, a następnie ustaw wb = ThisWorkbook With wb On Error Resume Next WorksheetExists2 = (.Sheets(WorksheetName).Name = WorksheetName) W przypadku błędu Przejdź do 0 Zakończ z funkcją End Sub FindSheet() If WorksheetExists2("Arkusz1") Then MsgBox "Arkusz1 jest w tym skoroszycie" Else MsgBox "Ups: Arkusz nie istnieje" End If End Sub 

Po uruchomieniu makra „FindSheet”, jeśli arkusz istnieje, otrzymamy następujący komunikat:

Jeśli Arkusz nie istnieje, otrzymamy następujący komunikat:

Podobnie możemy mieć prostą pętlę IF, która sprawdza, czy arkusz istnieje, a następnie wykonuje określone akcje.

Sub test() Dim ws As Worksheet Dla każdego ws In ThisWorkbook.Worksheets If ws.Name "Main" Then ws.Range("A1").Value = ws.Name Else ws.Range("A1").Value = " GŁÓWNA STRONA LOGOWANIA” Koniec Jeśli dalej Koniec Sub 

  • Aby przetestować powyższe makro, musimy utworzyć arkusz o nazwie „Main”. To makro jest bardzo proste
  • Przechodzi przez każdy arkusz w skoroszycie
  • Następnie sprawdza, czy nazwa arkusza roboczego nie jest MAIN
  • Jeśli jest to MAIN, wyświetla tekst, taki jak „MAIN LOGIN PAGE” w A1 tego arkusza, w przeciwnym razie wyświetla nazwę arkusza w komórce A1

  • To tylko kolejny sposób sprawdzenia, czy arkusz istnieje. Jeśli istnieje, wykonaj czynność A, jeśli nie, czynność B

Wniosek: Możemy określić, czy arkusz istnieje w naszym skoroszycie, czy nie; możemy użyć UDF lub podprogramu zgodnie z naszą wygodą.

Jeśli podobały Ci się nasze blogi, podziel się nimi ze znajomymi na Facebooku. A także możesz śledzić nas na Twitterze i Facebooku.

Chcielibyśmy usłyszeć od Ciebie, daj nam znać, jak możemy ulepszyć, uzupełnić lub unowocześnić naszą pracę i uczynić ją lepszą dla Ciebie. Napisz do nas na stronie e-mail