Crearea unei funcții pentru Excel

Funcția de mai jos verifică dacă un registru de lucru (workbook) conține foi de lucru (sheets) nefolosite (goale).

1. Option Explicit
2.
3. Function FoiGoaleInWorkbook(ByRef TestareWorkbook As Workbook) As Boolean 
4. Dim objWorksheet As Worksheet 
5. FoiGoaleInWorkbook = False
6. For Each objWorksheet In TestareWorkbook.Worksheets
7.   If Application.WorksheetFunction.CountBlank _
      (objWorksheet.Range("A1:IV65536")) = 16777216 Then 
8.        FoiGoaleInWorkbook = True 
9.        Exit Function 
10.  End If
11. Next objWorksheet 
12. End Function
13.
14. Sub Verific_Foi_Goale_In_Workbook()
15.   If FoiGoaleInWorkbook(ActiveWorkbook) = True Then
16.     MsgBox "Acest registru contine una sau mai multe foi de lucru goale." & _ 
        vbCr & vbCr & "Va rugam sa le stergeti  inainte de a" & _
        " inchide registrul.", vbOKOnly & vbExclamation, _
        "Verificare daca exista foi de lucru goale. "
17.   End If 
18. End Sub

Iată cum funcționează codul:

  • Linia 1 conține comanda Option Explicit pentru modul, care forțează declararea explicită a tuturor variabilelor. Linia 2 este goală.
  • Pe linia 3 începe funcția numită FoiGoaleInWorkbook, de tip Boolean. Funcția lucrează pe un obiect numit TestareWorkbook, de tip Workbook – un registru de lucru.
  • Linia 4 declară o variabilă numită objWorksheet, de tip Worksheet.
  • Linia 5 setează valoarea funcției FoiGoaleInWorkbook la False.
  • Linia 6 începe o buclă For Each...Next care rulează pentru fiecare obiect objWorksheet (fiecare foaie de lucru) din colecția Worksheets din obiectul TestareWorkbook - adică pentru fiecare foaie de lucru din registru, care este transmisă funcției.
  • Linia 7 folosește funcția CountBlank a foii de lucru pentru a număra celulele goale din domeniul A1 : IV65536 care sunt testate de buclă. Dacă numărul celulelor goale este 16777216, foaia de lucru este goală – toate celulele ei sunt goale. Linia 8 setează valoarea funcției FoiGoaleInWorkbook la True, iar linia 9 folosește comanda Exit Function pentru a ieși din funcție. Se iese din funcție, deoarece nu mai este necesară testarea altor foi de lucru dacă a fost găsită cel puțin o foaie de lucru goală.
  • Linia 10 conține comanda End If care încheie comanda If. Linia 11 conține comanda Next objWorksheet care încheie bucla For Each...Next. Iar linia 12 conține comanda End Function care încheie funcția. Linia 13 este goală.
  • Linia 14 începe o subprocedură scurtă numită Verific_Foi_Goale_In_Workbook. Linia 15 rulează funcția FoiGoaleInWorkbook pe obiectul ActiveWorkbook, care reprezintă registrul activ din sesiunea Excel. Dacă funcția FoiGoaleInWorkbook returnează True, linia 16 afișează un mesaj care anunță utilizatorul că registrul de lucru conține una sau mai multe foi de lucru goale și propune utilizatorului să le șteargă.