Det kan finnas en tid då du måste kontrollera om det finns ett kalkylblad som du har skapat eller tagit bort i en arbetsbok i ett VBA -makro / kod. Vi kan enkelt göra detta med hjälp av en funktion / makro. Det finns flera sätt att kontrollera om det finns ett kalkylblad.
Vi kommer att täcka följande sätt i den här artikeln:
1. Användardefinierad funktion som kallas UDF
2. Delrutin via meddelanderuta
Första alternativet: Användardefinierad funktion
Följande ögonblicksbild innehåller några bladnamn och vi kommer att kontrollera om namnen på arket i kolumn A finns.
För att ta reda på om det finns ett specifikt blad måste vi följa stegen nedan för att starta VB -redigeraren
- Klicka på fliken Utvecklare
- Välj Visual Basic i kodgruppen
- Kopiera koden nedan i standardmodulen
Alternativ 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 = Falsk slutfunktion
- För att kontrollera använder vi UDF i cell B2 som
- = WorksheetExists (A2)
- I bilden ovan finns "MasterSheet" inte i vår provarbok; därför har formeln gett svaret falskt
Kodförklaring:
Denna funktion tar värdet för "WorksheetName" från makrot som utför andra aktiviteter. Om du behöver ändra det enligt din kod kan du göra det.
För varje del i ThisWorkbook.Worksheets och Nästa Sht är start- och slutdelarna av slingan respektive.
Sedan Om Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Sedan
WorksheetExists = True
Kontrollerar om arknamnet matchar det bladnamn som skickades från huvudmakrot. Om det gör det är WorksheetExists True och vi kan avsluta funktionen. Annars returneras WorksheetExists = False tillbaka till huvudmakrot. Slingan går från det första arket till nästa tills alla arken har kontrollerats.
Andra alternativet: Underrutin via meddelanderuta
Vi kan ha en normal subrutin som kallar en UDF och, om det angivna bladet hittas, kommer meddelanderutan att visa "blad finns"; om det inte hittas dyker msgbox upp, "blad hittades inte".
För att kontrollera kopierar vi följande kod i standardmodulen:
Function WorksheetExists2 (WorksheetName As String, Valfritt 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 work book" Else MsgBox "Oops: Sheet does not exist" End If End Sub
Efter att ha kört makrot "FindSheet" får vi följande meddelandefält om det finns ett ark:
Om Sheet inte finns får vi följande meddelanderuta:
På samma sätt kan vi ha en enkel IF -loop som kontrollerar om arket finns och utför vissa åtgärder därefter.
Deltest () Dim ws som arbetsblad för varje ws i ThisWorkbook.Worksheets Om ws.Name "Main" Sedan ws.Range ("A1"). Value = ws.Name Else ws.Range ("A1"). Value = " MAIN LOGIN PAGE "End If Next ws End Sub
- För att testa makrot ovan måste vi skapa ett bladnamn "Main". Detta makro är väldigt enkelt
- Det går igenom varje kalkylblad i arbetsboken
- Sedan kontrollerar det om kalkylbladets namn inte är MAIN
- Om det är MAIN, visar det text, som "MAIN LOGIN PAGE" i A1 på det arket, annars visar det arket namn i cell A1
- Detta är bara ett annat sätt att kontrollera om arket finns. Om den existerar, utför åtgärd A, om inte, åtgärd B
Slutsats: Vi kan identifiera om det finns ett blad i vår arbetsbok eller inte; vi kan använda UDF eller subrutin enligt vår bekvämlighet.
Om du gillade våra bloggar, dela den med dina vänner på Facebook. Och du kan också följa oss på Twitter och Facebook.
Vi vill gärna höra från dig, låt oss veta hur vi kan förbättra, komplettera eller förnya vårt arbete och göra det bättre för dig. Skriv till oss på e -postwebbplatsen