tovar

Príklady makier programu Excel napísaných pomocou jazyka VBA

Nasledujúce jednoduché príklady makier programu Excel boli napísané pomocou jazyka VBA 

Odhadovaný čas čítania: 3 minúty

Príklad VBA pomocou Array

Nasledujúca procedúra Sub načíta hodnoty z buniek v stĺpci A aktívneho hárka, kým nenarazí na prázdnu bunku. Hodnoty sú uložené v poli. Tento jednoduchý príklad makra Excel ilustruje použitie:

  • deklarácie premenných;
  • Dynamické polia;
  • Cyklus Do Until;
  • Pozrite si bunky v aktuálnom hárku programu Excel;
  • Funkcia VBA Ubound vstavaný (ktorý vráti najvyšší index poľa).
' 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

Procedúra ukladá hodnoty v stĺpci A aktívneho pracovného hárka do poľa, všimnite si, že:

  • Cyklus Do Until extrahuje hodnoty každej bunky v stĺpci A aktívneho pracovného hárka, pričom ignoruje prázdne bunky
  • Kondícia "If UBound(dCellValues) < iRow” skontroluje, či je pole dCellValues ​​​​dostatočne veľké na uloženie informácií, ak nie, použite ReDim na zväčšenie veľkosti poľa o 10
  • Nakoniec vzdelanie​​dCellValues(iRow) = Cells(iRow, 1).Value” Uloží aktuálnu bunku do poľa CellValues

Príklad VBA s matematickými operáciami

Nasledujúci postup Sub načíta hodnoty zo stĺpca A pracovného hárka s názvom „Hárok2“ a vykoná aritmetické operácie s hodnotami. Výsledné hodnoty sú vytlačené v stĺpci A aktuálneho aktívneho pracovného hárka.

Toto makro ilustruje:

Inovačný bulletin
Nenechajte si ujsť najdôležitejšie novinky o inováciách. Prihláste sa na ich odber e-mailom.
  • deklarácie premenných;
  • objekty programu Excel (konkrétne použitie kľúčového slova Set a spôsob prístupu k objektu 'Columns' z objektu 'Sheets');
  • Cyklus Do Until;
  • Získajte prístup k pracovným hárkom a rozsahom buniek v aktuálnom excelovom zošite.
' 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

Príklad VBA so záznamom dátumu úpravy

Napíšme jednoduché makro VBA, ktoré sa spustí, keď sa aktualizuje bunka v určitom rozsahu nášho hárku. Predpokladajme, že chcete sledovať zmeny v stĺpci B (B4 až B11) a zaznamenať dátum a čas zmeny v stĺpci A.
Poďme takto:

  • Na karte Developer kliknite na možnosť "Visual Basic” na otvorenie editora VBA.
  • V editore VBA dvakrát kliknite na editor kódu súvisiaci s Sheet2.
  • Na pravej (alebo ľavej) karte vyberte Pracovný hárok a vyberte možnosť Zmeniť.
  • Pridať kód 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

Uložte zošit s povolenými makrami (napríklad ako súbor .xlsm).


Teraz, zakaždým, keď aktualizujeme bunku v stĺpci B (z riadku 1 na riadok 10), bunka v stĺpci A automaticky zobrazí aktuálny dátum a čas.

Ercole Palmeri

Inovačný bulletin
Nenechajte si ujsť najdôležitejšie novinky o inováciách. Prihláste sa na ich odber e-mailom.

Nedávne články

Veeam ponúka najkomplexnejšiu podporu pre ransomvér, od ochrany až po reakciu a obnovu

Coveware od Veeam bude aj naďalej poskytovať služby reakcie na incidenty v oblasti kybernetického vydierania. Coveware ponúkne forenzné a sanačné schopnosti…

Apríla 23 2024

Zelená a digitálna revolúcia: Ako prediktívna údržba transformuje ropný a plynárenský priemysel

Prediktívna údržba prináša revolúciu v ropnom a plynárenskom sektore s inovatívnym a proaktívnym prístupom k riadeniu závodu.…

Apríla 22 2024

Britský protimonopolný regulátor vyvoláva poplach BigTech v súvislosti s GenAI

Britská CMA vydala varovanie pred správaním Big Tech na trhu s umelou inteligenciou. tam…

Apríla 18 2024

Casa Green: energetická revolúcia pre udržateľnú budúcnosť v Taliansku

Vyhláška „Case Green“, ktorú sformulovala Európska únia na zvýšenie energetickej účinnosti budov, ukončila svoj legislatívny proces s…

Apríla 18 2024