Članci

Primjeri Excel makroa napisanih pomoću VBA

Sljedeći jednostavni primjeri Excel makroa napisani su pomoću VBA 

Predviđeno vrijeme čitanja: 3 minute

VBA primjer koji koristi niz

Sljedeća podprocedura čita vrijednosti iz ćelija u koloni A aktivnog radnog lista, sve dok ne naiđe na praznu ćeliju. Vrijednosti se pohranjuju u niz. Ovaj jednostavan primjer makronaredbe Excel ilustruje upotrebu:

  • deklaracije varijabli;
  • Dinamički nizovi;
  • Ciklus Do Until;
  • Pogledajte ćelije u trenutnom Excel radnom listu;
  • VBA funkcija Ubound ugrađen (koji vraća najviši indeks niza).
' 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

Procedura pohranjuje vrijednosti u koloni A aktivnog radnog lista u nizu, imajte na umu da:

  • Ciklus Do Until izdvaja vrijednosti svake ćelije u koloni A aktivnog radnog lista, zanemarujući prazne ćelije
  • Uslov "If UBound(dCellValues) < iRow” provjerava da li je niz dCellValues ​​dovoljno velik da zadrži informacije, ako nije, koristite ReDim da povećate veličinu niza za 10
  • Konačno, obrazovanje​​dCellValues(iRow) = Cells(iRow, 1).Value” Pohranjuje trenutnu ćeliju u niz CellValues

VBA primjer sa matematičkim operacijama

Sljedeća podprocedura čita vrijednosti iz stupca A radnog lista pod nazivom „Sheet2“ i izvodi aritmetičke operacije nad vrijednostima. Rezultirajuće vrijednosti se ispisuju u koloni A trenutno aktivnog radnog lista.

Ovaj makro ilustruje:

Inovacijski bilten
Ne propustite najvažnije vijesti o inovacijama. Prijavite se da ih primate putem e-pošte.
  • deklaracije varijabli;
  • Excel objekti (konkretno, upotreba ključne riječi Set i kako pristupiti objektu 'Kolone' iz objekta 'Sheets');
  • Ciklus Do Until;
  • Pristupite radnim listovima i rasponima ćelija u trenutnoj Excel radnoj knjizi.
' 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 primjer sa snimanjem datuma izmjene

Napišimo jednostavan VBA makro koji se pokreće kada se ćelija u određenom opsegu našeg lista ažurira. Pretpostavimo da želite da pratite promene u koloni B (B4 do B11) i da zabeležite datum i vreme promene u koloni A.
Nastavimo ovako:

  • Na kartici Developer kliknite na opciju "Visual Basic” da otvorite VBA editor.
  • U VBA editoru, dvaput kliknite na uređivač koda koji se odnosi na Sheet2.
  • Odaberite Radni list s desne (ili lijeve) kartice i odaberite opciju Promjena.
  • Dodajte VBA kod:
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

Sačuvajte radnu svesku sa omogućenim makroima (na primer, kao .xlsm datoteku).


Sada, svaki put kada ažuriramo ćeliju u koloni B (od reda 1 do reda 10), ćelija u koloni A će automatski prikazati trenutni datum i vrijeme.

Ercole Palmeri

Inovacijski bilten
Ne propustite najvažnije vijesti o inovacijama. Prijavite se da ih primate putem e-pošte.

Nedavni članak

Veeam nudi najsveobuhvatniju podršku za ransomware, od zaštite do odgovora i oporavka

Coveware od strane Veeam-a će nastaviti da pruža usluge odgovora na incidente u slučaju sajber iznude. Coveware će ponuditi mogućnosti forenzike i sanacije…

23 april 2024

Zelena i digitalna revolucija: Kako prediktivno održavanje transformira industriju nafte i plina

Prediktivno održavanje revolucionira sektor nafte i plina, s inovativnim i proaktivnim pristupom upravljanju postrojenjima.…

22 april 2024

Britanski antimonopolski regulator podigao je BigTech uzbunu zbog GenAI

UK CMA izdao je upozorenje o ponašanju Big Tech-a na tržištu umjetne inteligencije. Tamo…

18 april 2024

Casa Green: energetska revolucija za održivu budućnost u Italiji

Uredba o „zelenim kućama“, koju je formulisala Evropska unija za poboljšanje energetske efikasnosti zgrada, završila je svoj zakonodavni proces sa…

18 april 2024