Der kan være et tidspunkt, hvor du skal kontrollere, om der findes et regneark, som du har oprettet eller slettet i en projektmappe i en VBA -makro / kode. Vi kan nemt gøre dette ved hjælp af en funktion / makro. Der er flere måder at kontrollere, om der findes et regneark.
Vi vil dække følgende måder i denne artikel:
1. Brugerdefineret funktion kendt som UDF
2. Underrutine gennem meddelelsesboks
Første mulighed: Brugerdefineret funktion
Følgende snapshot indeholder få arknavne, og vi vil kontrollere, om navnene på arket i kolonne A findes.
For at finde ud af, om der findes et specifikt ark, skal vi følge nedenstående trin for at starte VB -editor
- Klik på fanen Udvikler
- Vælg Visual Basic fra kodegruppen
- Kopier nedenstående kode i standardmodulet
Option Eksplicit funktion WorksheetExists (ByVal WorksheetName As String) As Boolean Dim Sht As Worksheet For Every Sht In ThisWorkbook.Worksheets If Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Then WorksheetExists = True Exit Function End If Next Sht WorksheetExists = Falsk slutfunktion
- For at kontrollere vil vi bruge UDF i celle B2 som
- = WorksheetExists (A2)
- I billedet ovenfor findes "MasterSheet" ikke i vores prøvebog; derfor har formlen givet svaret som falsk
Kode Forklaring:
Denne funktion tager værdien for "regnearksnavn" fra makroen, der udfører andre aktiviteter. Hvis du har brug for at ændre det i henhold til din kode, kan du evt.
For hver Sht i ThisWorkbook.Worksheets og Næste Sht er henholdsvis start- og slutdelen af sløjfen.
Derefter Hvis Application.Proper (Sht.Name) = Application.Proper (regnearksnavn) Så
WorksheetExists = True
Kontrollerer, om arknavnet matcher det arknavn, der blev sendt fra hovedmakroen. Hvis det gør det, er WorksheetExists True, og vi kan forlade funktionen. Ellers returneres WorksheetExists = False tilbage til hovedmakroen. Sløjfen går fra det første ark til det næste, indtil alle arkene er blevet kontrolleret.
Anden mulighed: Underrutine gennem meddelelsesboks
Vi kan have en normal subrutine, der kalder en UDF, og hvis det angivne ark findes, vises meddelelsesboksen 'ark findes'; hvis ikke fundet, så dukker msgbox op, 'ark ikke fundet'.
For at kontrollere vil vi kopiere følgende kode i standardmodulet:
Funktion WorksheetExists2 (regnearksnavn som streng, valgfri wb som arbejdsmappe) som boolsk Hvis wb ikke er noget, så indstil wb = ThisWorkbook With wb On Error Resume Next WorksheetExists2 = (.Sheets (WorksheetName) .Name = WorksheetName) On Error GoTo 0 End With End Function Sub FindSheet () Hvis WorksheetExists2 ("Sheet1") Så er MsgBox "Sheet1 i denne projektmappe" Else MsgBox "Ups: Sheet does not exist" End If End Sub
Efter at have kørt makroen "FindSheet", får vi følgende meddelelsesboks, hvis der findes et ark:
Hvis Sheet ikke findes, får vi følgende meddelelsesboks:
På samme måde kan vi have en simpel IF -loop, der kontrollerer, om arket findes og udfører bestemte handlinger derefter.
Deltest () Dim ws som regneark for hver ws i ThisWorkbook.Worksheets Hvis ws.Name "Main" Så ws.Range ("A1"). Value = ws.Name Else ws.Range ("A1"). Value = " MAIN LOGIN PAGE "End If Next ws End Sub
- For at teste ovenstående makro skal vi oprette et arknavn "Main". Denne makro er meget enkel
- Det går gennem hvert regneark i projektmappen
- Derefter kontrollerer det, om regnearksnavnet ikke er HOVED
- Hvis det er MAIN, viser det tekst, f.eks. "MAIN LOGIN PAGE" i A1 på dette ark, ellers viser det navnet på arket i celle A1
- Dette er bare en anden måde at kontrollere, om arket findes. Hvis den findes, skal du udføre handling A, hvis ikke, handling B
Konklusion: Vi kan identificere, om der findes et ark i vores projektmappe eller ej; vi kan bruge UDF eller underprogram efter vores bekvemmelighed.
Hvis du kunne lide vores blogs, kan du dele den med dine venner på Facebook. Og også du kan følge os på Twitter og Facebook.
Vi vil meget gerne høre fra dig, lad os vide, hvordan vi kan forbedre, supplere eller innovere vores arbejde og gøre det bedre for dig. Skriv til os på e -mail -stedet