Microsoft Excelis VBA abil saate kindlaks teha, kas leht on töövihikus olemas

Lang L: none (table-of-contents)

Võib juhtuda aeg, mil peate kontrollima, kas tööleht, mille olete loonud või kustutanud töövihikusse VBA makro / koodi abil, on olemas. Funktsiooni / makro abil saame seda hõlpsalt teha. Töölehe olemasolu kontrollimiseks on mitu võimalust.

Selles artiklis käsitleme järgmisi viise:

1. Kasutaja määratud funktsioon, mida tuntakse kui UDF
2. Alamrutiin sõnumikasti kaudu

Esimene võimalus: kasutaja määratud funktsioon

Järgnev pilt sisaldab vähe lehtede nimesid ja kontrollime, kas veerus A olevad lehe nimed on olemas.

Konkreetse lehe olemasolu leidmiseks peame VB redaktori käivitamiseks järgima alltoodud samme

  • Klõpsake vahekaarti Arendaja
  • Valige koodigrupist Visual Basic

  • Kopeerige allolev kood standardmoodulisse
Valik Spetsiifiliste funktsioonide töölehtEksisteerib (ByVal WorksheetName As String) Boolean Dim Sht töölehena iga Sht käesoleva töövihiku jaoks. Töölehed Kui Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Siis WorksheetExists = True Exit Function End If Next Sht WorksheetExists = False End Function 

  • Kontrollimiseks kasutame lahtris B2 UDF -i kui
  • = WorksheetExists (A2)

  • Ülaltoodud pildil ei ole meie näidistöövihikus “MasterSheet”; seega on valem vastanud valele

Koodi selgitus:

See funktsioon võtab väärtuse „WorksheetName” makrast, mis teostab muid toiminguid. Kui peate seda oma koodi järgi muutma, saate seda teha.

Iga Sht selles töövihikus. Töölehed ja Järgmine Sht on vastavalt silmuse algus- ja lõpposa.

Siis Kui Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Siis

WorksheetExists = Tõsi

Kontrollib, kas lehe nimi vastab peamakrost edastatud lehe nimele. Kui see nii on, on WorksheetExists tõene ja saame funktsioonist väljuda. Vastasel korral tagastatakse töölehtExists = False tagasi peamise makro juurde. Silmus liigub 1. lehelt järgmisele, kuni kõik lehed on kontrollitud.

Teine võimalus: alamrutiin sõnumikasti kaudu

Meil võib olla tavaline alamprogramm, mis kutsub UDF -i ja kui määratud leht leitakse, kuvatakse sõnumikastis „leht on olemas”; kui seda ei leita, avaneb sõnumikast „Lehte ei leitud”.

Kontrollimiseks kopeerime standardmoodulisse järgmise koodi:

Funktsioon WorksheetExists2 (töölehe nimi kui string, valikuline wb kui töövihik) Booleanina, kui wb pole midagi, siis määrake wb = ThisWorkbook with wb On error Jätka järgmist töölehteExists2 = (.Sheets (WorksheetName) .Name = WorksheetName) Viga GoTo 0 End with End Alamotsingu leht () Kui töölehtEksisteerib2 ("leht1"), siis on MsgBox "leht1 selles töövihikus" Muu MsgBox "Vabandust: lehte pole olemas" Lõpp kui lõpp Alamleht 

Pärast makro „FindSheet” käivitamist saame lehe olemasolu korral järgmise sõnumikasti:

Kui lehte pole olemas, saame järgmise sõnumikasti:

Samamoodi võib meil olla lihtne IF -ahel, mis kontrollib lehe olemasolu ja teeb seejärel teatud toiminguid.

Alamkatse () Dim ws töölehena iga töö jaoks käesolevas töövihikus. Töölehed Kui ws.Name "Main" Siis ws.Range ("A1"). Value = ws.Name Els ws.Range ("A1"). Value = " PÕHISE SISELOGIMISE LEHT "Lõpeta, kui järgmine ws Lõpp alam 

  • Ülaltoodud makro testimiseks peame looma lehe nime “Main”. See makro on väga lihtne
  • See loeb läbi töövihiku iga töölehe
  • Seejärel kontrollib, kas töölehe nimi ei ole PÕHI
  • Kui see on MAIN, kuvatakse selle lehe A1 -s teksti, nt „PÕHISISE SISELOGIMISLEHT”, muidu kuvatakse lahtris A1 lehe nimi

  • See on veel üks viis lehe kontrollimiseks. Kui see on olemas, tehke toiming A, kui mitte, siis toiming B.

Järeldus: Saame tuvastada, kas leht on meie töövihikus olemas või mitte; saame kasutada UDF -i või alamprogrammi vastavalt meie mugavusele.

Kui teile meeldisid meie ajaveebid, jagage seda oma sõpradega Facebookis. Samuti saate meid jälgida Twitteris ja Facebookis.

Tahaksime sinust kuulda, andke meile teada, kuidas saaksime oma tööd täiustada, täiendada või uuendada ning muuta see teie jaoks paremaks. Kirjuta meile meilisaidile

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave