Članki

Primeri Excelovih makrov, napisanih z VBA

Naslednji preprosti primeri Excelovih makrov so bili napisani z uporabo VBA 

Predvideni čas branja: 3 min

Primer VBA z uporabo Array

Naslednji podpostopek bere vrednosti iz celic v stolpcu A aktivnega delovnega lista, dokler ne naleti na prazno celico. Vrednosti so shranjene v matriki. Ta preprost primer Excelovega makra ponazarja uporabo:

  • Deklaracije spremenljivk;
  • dinamični nizi;
  • Cikel Do Until;
  • Glejte celice v trenutnem Excelovem delovnem listu;
  • Funkcija VBA Ubound vgrajen (ki vrne najvišji indeks matrike).
' 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

Postopek shrani vrednosti v stolpcu A aktivnega delovnega lista v matriko, upoštevajte, da:

  • Cikel Do Until izvleče vrednosti vsake celice v stolpcu A aktivnega delovnega lista, pri čemer ignorira prazne celice
  • pogoj "If UBound(dCellValues) < iRow” preveri, ali je matrika dCellValues ​​​​dovolj velika za shranjevanje informacij, če ni, uporabite ReDim, da povečate velikost matrike za 10
  • Končno izobraževanje​​dCellValues(iRow) = Cells(iRow, 1).Value” Shrani trenutno celico v matriko CellValues ​​​​

Primer VBA z matematičnimi operacijami

Naslednji podpostopek prebere vrednosti iz stolpca A delovnega lista z imenom »Sheet2« in izvede aritmetične operacije z vrednostmi. Dobljene vrednosti so natisnjene v stolpcu A trenutnega aktivnega delovnega lista.

Ta makro ponazarja:

Glasilo o inovacijah
Ne zamudite najpomembnejših novic o inovacijah. Prijavite se, če jih želite prejemati po e-pošti.
  • Deklaracije spremenljivk;
  • Excelovi predmeti (natančneje, uporaba ključne besede Set in kako dostopati do predmeta 'Columns' iz predmeta 'Sheets');
  • Cikel Do Until;
  • Dostop do delovnih listov in obsegov celic v trenutnem Excelovem delovnem zvezku.
' 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

Primer VBA z zapisom datuma spremembe

Napišimo preprost makro VBA, ki se sproži, ko se posodobi celica v določenem obsegu našega lista. Recimo, da želite slediti spremembam v stolpcu B (B4 do B11) in zabeležiti datum in uro spremembe v stolpcu A.
Nadaljujmo takole:

  • V zavihku Developer kliknite možnost "Visual Basic”, da odprete urejevalnik VBA.
  • V urejevalniku VBA dvokliknite urejevalnik kode, povezan s Sheet2.
  • Na desnem (ali levem) zavihku izberite Delovni list in izberite možnost Spremeni.
  • Dodajte kodo VBA:
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

Shranite delovni zvezek z omogočenimi makri (na primer kot datoteko .xlsm).


Zdaj bo vsakič, ko posodobimo celico v stolpcu B (od vrstice 1 do vrstice 10), celica v stolpcu A samodejno prikazala trenutni datum in čas.

Ercole Palmeri

Glasilo o inovacijah
Ne zamudite najpomembnejših novic o inovacijah. Prijavite se, če jih želite prejemati po e-pošti.

Nedavni članki

Veeam ponuja najobsežnejšo podporo za izsiljevalsko programsko opremo, od zaščite do odziva in obnovitve

Coveware by Veeam bo še naprej zagotavljal storitve odzivanja na incidente kibernetskega izsiljevanja. Coveware bo nudil forenziko in zmogljivosti sanacije ...

April 23 2024

Zelena in digitalna revolucija: kako predvideno vzdrževanje preoblikuje naftno in plinsko industrijo

Prediktivno vzdrževanje revolucionira sektor nafte in plina z inovativnim in proaktivnim pristopom k upravljanju obratov.…

April 22 2024

Britanski protimonopolni regulator sproži alarm BigTech zaradi GenAI

Britanski CMA je izdal opozorilo glede obnašanja Big Tech na trgu umetne inteligence. tam …

April 18 2024

Casa Green: energetska revolucija za trajnostno prihodnost v Italiji

Odlok "Case Green", ki ga je oblikovala Evropska unija za povečanje energetske učinkovitosti stavb, je zaključil svoj zakonodajni postopek z ...

April 18 2024