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

Lastele mõeldud värvimislehtede eelised – võlumaailm igas vanuses

Peenmotoorika arendamine värvimise kaudu valmistab lapsi ette keerukamate oskuste, nagu kirjutamise, jaoks. Värvimiseks…

2 mai 2024

Tulevik on käes: kuidas laevandustööstus muudab maailmamajandust murranguliseks

Meresõidusektor on tõeline ülemaailmne majanduslik jõud, mis on liikunud 150 miljardi suuruse turu poole...

1 mai 2024

Kirjastajad ja OpenAI sõlmivad lepinguid tehisintellekti poolt töödeldava teabe liikumise reguleerimiseks

Eelmisel esmaspäeval teatas Financial Times tehingust OpenAI-ga. FT litsentsib oma maailmatasemel ajakirjandust…

Aprill 30 2024

Veebimaksed: voogesitusteenused panevad teid igaveseks maksma

Miljonid inimesed maksavad voogedastusteenuste eest, makstes igakuist liitumistasu. Levinud on arvamus, et sa…

Aprill 29 2024