Nosakiet, vai lapa atrodas darbgrāmatā, izmantojot Microsoft Excel VBA

Anonim

Var gadīties, ka jums jāpārbauda, ​​vai pastāv darblapa, kuru esat izveidojis vai izdzēsis darbgrāmatā VBA makro / kodā. Mēs to varam viegli izdarīt, izmantojot funkciju / makro. Ir vairāki veidi, kā pārbaudīt darblapas esamību.

Šajā rakstā mēs apskatīsim šādus veidus:

1. Lietotāja definēta funkcija, kas pazīstama kā UDF
2. Apakšrutīna, izmantojot ziņojumu lodziņu

Pirmā iespēja: lietotāja definēta funkcija

Šajā momentuzņēmumā ir daži lapu nosaukumi, un mēs pārbaudīsim, vai A slejas lapu nosaukumi pastāv.

Lai uzzinātu, vai pastāv konkrēta lapa, mums ir jāveic šādas darbības, lai palaistu VB redaktoru

  • Noklikšķiniet uz cilnes Izstrādātājs
  • Kodu grupā atlasiet Visual Basic

  • Nokopējiet zemāk esošo kodu standarta modulī
Opcija Skaidras funkcijas darblapaEsastāv (ByVal darblapas nosaukums kā virkne) Kā Būla Dim Sht kā darblapa katrai šīs darbgrāmatas vietnei Sht.Worksheets If Application.Proper (Sht.Name) = Application.Proper (WorksheetName), tad WorksheetExists = True Exit Funkcija beidzas, ja nākamā Sht darblapa ir = False End Function 

  • Lai pārbaudītu, mēs izmantosim UDF šūnā B2 kā
  • = WorksheetExists (A2)

  • Iepriekš redzamajā attēlā “MasterSheet” mūsu darbgrāmatas paraugā nav; tāpēc formula ir sniegusi atbildi kā nepatiesa

Koda skaidrojums:

Šī funkcija ņem vērtību “WorksheetName” no makro, kas veic citas darbības. Ja jums tas jāmaina atbilstoši jūsu kodam, varat.

Par katru Sht šajā darba grāmatā. Darba lapas un Nākamais Sht ir attiecīgi cilpas sākuma un beigu daļas.

Tad Ja Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Tad

WorksheetExists = True

Pārbauda, ​​vai lapas nosaukums atbilst lapas nosaukumam, kas nodots no galvenā makro. Ja tas notiek, WorksheetExists ir True, un mēs varam iziet no funkcijas. Pretējā gadījumā WorksheetExists = False tiek atgriezts galvenajā makro. Cilpa iet no 1. lapas uz nākamo, līdz visas lapas ir pārbaudītas.

Otrā iespēja: apakšprogramma, izmantojot ziņojumu lodziņu

Mums var būt normāla apakšprogramma, kas izsauc UDF, un, ja tiek atrasta norādītā lapa, ziņojumu lodziņā tiks parādīts “lapa pastāv”; ja tas nav atrasts, tiek parādīta ziņojuma lodziņš “lapa nav atrasta”.

Lai to pārbaudītu, standarta modulī mēs nokopēsim šādu kodu:

Funkcija WorksheetExists2 (darblapas nosaukums kā virkne, pēc izvēles wb kā darbgrāmata) kā Būla, ja wb nav nekas, tad iestatiet wb = ThisWorkbook with wb On Error Atsākt nākamo darblapuExists2 = (.Sheets (WorksheetName) .Name = WorksheetName) Kļūda GoTo 0 Beigt ar beigu funkciju Sub FindSheet () Ja WorksheetExists2 ("Sheet1"), tad MsgBox "Sheet1 ir šajā darbgrāmatā" Cita MsgBox "Hmm: lapa nepastāv" End If End Sub 

Pēc makro “FindSheet” palaišanas mēs saņemsim šādu ziņojumu lodziņu, ja lapa pastāv:

Ja lapa neeksistē, mēs saņemsim šādu ziņojumu lodziņu:

Līdzīgi mums var būt vienkārša IF cilpa, kas pārbauda, ​​vai lapa pastāv, un pēc tam veic noteiktas darbības.

Apakšpārbaude () Dim ws kā darblapa katram ws šajā darba grāmatā. Darba lapas Ja ws.Name "Main" Tad ws.Range ("A1"). Value = ws.Name Els ws.Range ("A1"). Value = " GALVENĀ PIETEIKŠANĀS LAPA "Beigt, ja nākamā un beigu apakšdaļa 

  • Lai pārbaudītu iepriekš minēto makro, mums ir jāizveido lapas nosaukums “Galvenais”. Šis makro ir ļoti vienkāršs
  • Tas tiek pārvietots pa katru darbgrāmatas darblapu
  • Pēc tam tiek pārbaudīts, vai darblapas nosaukums nav GALVENAIS
  • Ja tā ir GALVENĀ, šīs lapas A1 tiek parādīts teksts, piemēram, “PAMATLOGINĀŠANAS LAPA”, citādi A1 šūnā tiek parādīts lapas nosaukums

  • Tas ir tikai vēl viens veids, kā pārbaudīt, vai lapa pastāv. Ja tā pastāv, veiciet darbību A, ja nē, tad darbību B.

Secinājums: Mēs varam noteikt, vai lapa atrodas mūsu darbgrāmatā vai nav; mēs varam izmantot UDF vai apakšprogrammu pēc mūsu ērtībām.

Ja jums patika mūsu emuāri, kopīgojiet to ar saviem draugiem Facebook. Un arī jūs varat sekot mums Twitter un Facebook.

Mēs labprāt uzklausītu jūsu viedokli, dariet mums zināmu, kā mēs varam uzlabot, papildināt vai ieviest jauninājumus mūsu darbā un uzlabot to jūsu labā. Rakstiet mums e -pasta vietnē