Finn ut om det finnes et ark i en arbeidsbok ved hjelp av VBA i Microsoft Excel

Anonim

Det kan være en tid da du må sjekke om det finnes et regneark som du har opprettet eller slettet i en arbeidsbok i en VBA -makro / kode. Vi kan enkelt gjøre dette ved hjelp av en funksjon / makro. Det er flere måter å sjekke om det finnes et regneark.

Vi vil dekke følgende måter i denne artikkelen:

1. Brukerdefinert funksjon kjent som UDF
2. Underrutine gjennom meldingsboksen

Første alternativ: Brukerdefinert funksjon

Følgende øyeblikksbilde inneholder få arknavn, og vi vil sjekke om navnene på arket i kolonne A eksisterer.

For å finne ut om det finnes et bestemt ark, må vi følge trinnene nedenfor for å starte VB -editor

  • Klikk på kategorien Utvikler
  • Velg Visual Basic fra kodegruppen

  • Kopier koden nedenfor i standardmodulen
Alternativ Eksplisitt funksjon 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 = Falske endefunksjon 

  • For å kontrollere vil vi bruke UDF i celle B2 som
  • = WorksheetExists (A2)

  • I bildet ovenfor, eksisterer ikke "MasterSheet" i prøveboken vår. Derfor har formelen gitt svaret som usant

Kode Forklaring:

Denne funksjonen tar verdien for "Regnearknavn" fra makroen som utfører andre aktiviteter. Hvis du trenger å endre den i henhold til koden din, kan du gjøre det.

For hver del av denne arbeidsboken. Arbeidsark og Neste Sht er henholdsvis start- og sluttdelene av sløyfen.

Deretter Hvis Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Så

WorksheetExists = True

Kontrollerer om arknavnet samsvarer med arkenavnet som ble sendt fra hovedmakroen. Hvis det gjør det, er WorksheetExists True, og vi kan avslutte funksjonen. Ellers returneres WorksheetExists = False tilbake til hovedmakroen. Sløyfen går fra det første arket til det neste til alle arkene er sjekket.

Andre alternativ: Underrutine gjennom meldingsboks

Vi kan ha en normal subrutine som kaller en UDF, og hvis det angitte arket blir funnet, vil meldingsboksen vise "ark eksisterer"; hvis ikke funnet, dukker det opp msgbox, "ark ikke funnet".

For å kontrollere vil vi kopiere følgende kode i standardmodulen:

Funksjon WorksheetExists2 (regnearksnavn som streng, valgfritt wb som arbeidsbok) som boolsk hvis wb ikke er noe, sett deretter 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 

Etter å ha kjørt makroen "FindSheet", får vi følgende meldingsboks hvis det finnes et ark:

Hvis ark ikke eksisterer, får vi følgende meldingsboks:

På samme måte kan vi ha en enkel IF -løkke som sjekker om arket eksisterer og utfører visse handlinger deretter.

Deltest () Dim ws som regneark for hver ws i ThisWorkbook.Worksheets Hvis ws.Name "Main" deretter ws.Range ("A1"). Value = ws.Name Else ws.Range ("A1"). Value = " HOVEDLOGGING SIDE "Slutt hvis neste er slutt Sub 

  • For å teste makroen ovenfor må vi lage et arknavn "Main". Denne makroen er veldig enkel
  • Den går gjennom hvert regneark i arbeidsboken
  • Deretter sjekker det om regnearksnavnet ikke er HOVED
  • Hvis det er HOVED, viser det tekst, for eksempel "HOVEDLOGGING SIDE" i A1 i arket, ellers viser det navnet på arket i celle A1

  • Dette er bare en annen måte å sjekke om arket eksisterer. Hvis den eksisterer, utfør handling A, hvis ikke, handling B

Konklusjon: Vi kan identifisere om det finnes et ark i arbeidsboken vår eller ikke; vi kan bruke UDF eller subrutine etter vår bekvemmelighet.

Hvis du likte bloggene våre, del den med vennene dine på Facebook. Og du kan også følge oss på Twitter og Facebook.

Vi vil gjerne høre fra deg, gi oss beskjed om hvordan vi kan forbedre, utfylle eller innovere arbeidet vårt og gjøre det bedre for deg. Skriv til oss på e -post