Artiklid

VBA-ga kirjutatud Exceli makrode näited

Järgmised lihtsad Exceli makronäited on kirjutatud VBA abil 

Eeldatav lugemisaeg: 3 minutit

VBA näide massiivi kasutades

Järgmine alamprotseduur loeb väärtusi aktiivse töölehe veerus A olevatest lahtritest, kuni see kohtab tühja lahtri. Väärtused salvestatakse massiivi. See lihtne Exceli makro näide illustreerib järgmist:

  • Muutujate deklaratsioonid;
  • Dünaamilised massiivid;
  • Tsükkel Do Until;
  • Vaadake praeguse Exceli töölehe lahtreid;
  • VBA funktsioon Ubound builtin (mis tagastab massiivi kõrgeima indeksi).
' Sub procedure store values in Column A of the active Worksheet
' into an array
Sub GetCellValues()
Dim iRow As Integer            ' stores the current row number
Dim dCellValues() As Double  ' array to store the cell values
iRow = 1
ReDim dCellValues(1 To 10)
' Do Until loop to extract the value of each cell in column A
' of the active Worksheet, as long as the cell is not blank
Do Until IsEmpty(Cells(iRow, 1))
   ' Check that the dCellValues array is big enough
   ' If not, use ReDim to increase the size of the array by 10
   If UBound(dCellValues) < iRow Then
      ReDim Preserve dCellValues(1 To iRow + 9)
   End If
   ' Store the current cell in the CellValues array
   dCellValues(iRow) = Cells(iRow, 1).Value
   iRow = iRow + 1
Loop
End Sub

Protseduur salvestab aktiivse töölehe veerus A olevad väärtused massiivi, pange tähele, et:

  • Tsükkel Do Until ekstraheerib aktiivse töölehe veerus A iga lahtri väärtused, ignoreerides tühje lahtreid
  • Tingimus "If UBound(dCellValues) < iRow” kontrollib, kas massiiv dCellValues ​​on teabe mahutamiseks piisavalt suur, kui mitte, kasutage massiivi suurendamiseks 10 võrra ReDimi
  • Lõpuks haridus​​dCellValues(iRow) = Cells(iRow, 1).Value” Salvestab praeguse lahtri massiivi CellValues

VBA näide matemaatiliste tehtega

Järgmine alamprotseduur loeb väärtused töölehe nimega "Sheet2" veerust A ja teostab väärtustega aritmeetilisi toiminguid. Saadud väärtused trükitakse aktiivse töölehe veergu A.

See makro illustreerib:

Innovatsiooni uudiskiri
Ärge jätke ilma kõige olulisematest uuendustest. Registreeruge, et saada neid meili teel.
  • Muutujate deklaratsioonid;
  • Exceli objektid (täpsemalt märksõna Set kasutamine ja objektile 'Veerud' ligipääs objektist 'Sheets');
  • Tsükkel Do Until;
  • Juurdepääs praeguse Exceli töövihiku töölehtedele ja lahtrite vahemikele.
' Sub procedure to loop through the values in Column A of the Worksheet
' "Sheet2", perform arithmetic operations on each value, and write the
' result into Column A of the current Active Worksheet ("Sheet1")
Sub Transfer_ColA()
Dim i As Integer
Dim Col As Range
Dim dVal As Double
' Set the variable 'Col' to be Column A of Sheet 2
Set Col = Sheets("Sheet2").Columns("A")
i = 1
' Loop through each cell of the column 'Col' until
' a blank cell is encountered
Do Until IsEmpty(Col.Cells(i))
   ' Apply arithmetic operations to the value of the current cell
   dVal = Col.Cells(i).Value * 2 + 1
   ' The command below copies the result into Column A
   ' of the current Active Worksheet - no need to specify
   ' the Worksheet name as it is the active Worksheet.
   Cells(i, 1) = dVal
   i = i + 1
Loop
End Sub

VBA näide muutmiskuupäeva salvestamisega

Kirjutame lihtsa VBA-makro, mis käivitub, kui meie lehe teatud vahemiku lahtrit värskendatakse. Oletame, et soovite jälgida muudatusi veerus B (B4 kuni B11) ja salvestada veergu A muudatuse kuupäev ja kellaaeg.
Jätkame nii:

  • Vahekaardil Developer klõpsake valikul "Visual Basic", et avada VBA redaktor.
  • Topeltklõpsake VBA redaktoris Sheet2-ga seotud koodiredaktorit.
  • Valige paremalt (või vasakult) vahekaardilt Tööleht ja valige suvand Muuda.
  • Lisa VBA kood:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B1:B10")) Is Nothing Then
        Target.Range("A1:A1").Value = Now
    End If
End Sub

Salvestage töövihik, kui makrod on lubatud (näiteks .xlsm-failina).


Nüüd, iga kord, kui värskendame lahtrit veerus B (reast 1 kuni reani 10), kuvab veeru A lahter automaatselt praeguse kuupäeva ja kellaaja.

Ercole Palmeri

Innovatsiooni uudiskiri
Ärge jätke ilma kõige olulisematest uuendustest. Registreeruge, et saada neid meili teel.

Viimased artiklid

Veeam pakub lunavarale kõige põhjalikumat tuge alates kaitsest kuni reageerimise ja taastamiseni

Veeami Coveware jätkab küberväljapressimise juhtumitele reageerimise teenuste pakkumist. Coveware pakub kohtuekspertiisi ja heastamisvõimalusi…

Aprill 23 2024

Roheline ja digitaalne revolutsioon: kuidas ennustav hooldus muudab nafta- ja gaasitööstust

Ennustav hooldus muudab nafta- ja gaasisektori pöördeliseks uuendusliku ja ennetava lähenemisega tehaste juhtimisele.…

Aprill 22 2024

Ühendkuningriigi monopolivastane regulaator tõstab BigTechi häire GenAI pärast

Ühendkuningriigi CMA on väljastanud hoiatuse Big Techi käitumise kohta tehisintellekti turul. Seal…

Aprill 18 2024

Casa Green: energiarevolutsioon jätkusuutliku tuleviku nimel Itaalias

Euroopa Liidu poolt hoonete energiatõhususe suurendamiseks koostatud roheliste majade dekreet on lõpetanud oma seadusandliku protsessi…

Aprill 18 2024