Cikkek

Példák VBA-val írt Excel makrókra

A következő egyszerű Excel makrópéldákat VBA segítségével írtuk 

Becsült olvasási idő: 3 minuti

VBA példa Array használatával

A következő aleljárás addig olvassa ki az értékeket az aktív munkalap A oszlopában lévő cellákból, amíg egy üres cellát nem talál. Az értékek egy tömbben vannak tárolva. Ez az egyszerű Excel makrópélda a következők használatát szemlélteti:

  • Változó deklarációk;
  • Dinamikus tömbök;
  • Egy ciklus Do Until;
  • Lásd az aktuális Excel munkalap celláit;
  • A VBA funkció Ubound beépített (amely egy tömb legmagasabb indexét adja vissza).
' 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

Az eljárás az aktív munkalap A oszlopában lévő értékeket egy tömbben tárolja, vegye figyelembe, hogy:

  • A ciklus Do Until kivonja az aktív munkalap A oszlopában lévő egyes cellák értékeit, figyelmen kívül hagyva az üres cellákat
  • Az állapot "If UBound(dCellValues) < iRow” ellenőrzi, hogy a dCellValues ​​tömb elég nagy-e az információk tárolására, ha nem, akkor a ReDim segítségével növelje meg a tömb méretét 10-el
  • Végül az oktatás​​dCellValues(iRow) = Cells(iRow, 1).Value” Tárolja az aktuális cellát a CellValues ​​tömbben

VBA példa matematikai műveletekkel

A következő aleljárás beolvassa az értékeket a „Sheet2” munkalap A oszlopából, és számtani műveleteket hajt végre azokon. A kapott értékek az aktuális aktív munkalap A oszlopába kerülnek kinyomtatásra.

Ez a makró a következőket szemlélteti:

Innovációs hírlevél
Ne maradjon le az innovációval kapcsolatos legfontosabb hírekről. Regisztráljon, hogy megkapja őket e-mailben.
  • Változó deklarációk;
  • Excel-objektumok (konkrétan a Set kulcsszó használata és az 'Oszlopok' objektum elérése a 'Sheets' objektumból);
  • Egy ciklus Do Until;
  • Hozzáférés a munkalapokhoz és a cellatartományokhoz az aktuális Excel-munkafüzetben.
' 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 példa a módosítás dátumának rögzítésével

Írjunk egy egyszerű VBA-makrót, amely akkor indul el, amikor a lapunk egy adott tartományában lévő cella frissül. Tegyük fel, hogy nyomon szeretné követni a változásokat a B oszlopban (B4–B11), és rögzíteni szeretné a változás dátumát és időpontját az A oszlopban.
Folytassuk így:

  • A lapon Developer kattintson az opcióra "Visual Basic” a VBA-szerkesztő megnyitásához.
  • A VBA-szerkesztőben kattintson duplán a Sheet2-hez kapcsolódó kódszerkesztőre.
  • Válassza a Munkalap lehetőséget a jobb (vagy bal) lapon, és válassza a Módosítás lehetőséget.
  • VBA kód hozzáadása:
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

Mentse el a munkafüzetet a makrók engedélyezésével (például .xlsm fájlként).


Mostantól minden alkalommal, amikor frissítünk egy cellát a B oszlopban (1. sorról 10. sorra), az A oszlop cellája automatikusan megjeleníti az aktuális dátumot és időt.

Ercole Palmeri

Innovációs hírlevél
Ne maradjon le az innovációval kapcsolatos legfontosabb hírekről. Regisztráljon, hogy megkapja őket e-mailben.

Friss cikkek

Innovatív beavatkozás a kiterjesztett valóságba, egy Apple nézővel a Catania Poliklinikán

Szemplasztikai műtétet végeztek az Apple Vision Pro reklámmegjelenítővel a Catania Poliklinikán…

Május 3 2024

A színező oldalak előnyei gyerekeknek – a varázslatok világa minden korosztály számára

A finom motoros készségek színezéssel történő fejlesztése felkészíti a gyerekeket olyan összetettebb készségekre, mint az írás. Kiszínezni…

Május 2 2024

A jövő itt van: Hogyan forradalmasítja a hajózási ágazat a globális gazdaságot

A haditengerészeti szektor igazi világgazdasági hatalom, amely egy 150 milliárdos piac felé navigált...

Május 1 2024

A kiadók és az OpenAI megállapodásokat írnak alá a mesterséges intelligencia által feldolgozott információáramlás szabályozására

Múlt hétfőn a Financial Times bejelentette, hogy megállapodást köt az OpenAI-val. Az FT engedélyezi világszínvonalú újságírását…

30 április 2024