Artikelen

Beispiller vun Excel Macros geschriwwen mat VBA

Déi folgend einfach Excel Macro Beispiller goufen mat VBA geschriwwen 

Geschätzte Lieszäit: 3 minuti

VBA Beispill mat Array

Déi folgend Sub Prozedur liest Wäerter aus Zellen an der Kolonn A vum aktive Aarbechtsblat, bis et eng eidel Zelle begéint. D'Wäerter ginn an engem Array gespäichert. Dëst einfacht Excel Macro Beispill illustréiert d'Benotzung vun:

  • Variabel Deklaratioune;
  • dynamesch Arrays;
  • En Zyklus Do Until;
  • Referéiert op Zellen am aktuellen Excel Aarbechtsblat;
  • D'VBA Funktioun Ubound gebaut (wat den héchsten Index vun enger Array zréckkënnt).
' 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

D'Prozedur späichert d'Wäerter an der Kolonn A vum aktive Aarbechtsblat an engem Array, notéiert datt:

  • Den Zyklus Do Until extrahéiert d'Wäerter vun all Zell an der Kolonn A vum aktive Aarbechtsblat, ignoréiert eidel Zellen
  • Conditioun "If UBound(dCellValues) < iRowKontrolléiert datt d'dCellValues-Array grouss genuch ass fir d'Informatioun ze halen, wann net, benotzt ReDim fir d'Gréisst vum Array ëm 10 ze erhéijen
  • Endlech, Bildung​​dCellValues(iRow) = Cells(iRow, 1).Value"Späichert déi aktuell Zell am CellValues-Array

VBA Beispill mat mathematesch Operatiounen

Déi folgend Sub Prozedur liest d'Wäerter aus der Kolonn A vum Aarbechtsblat mam Numm "Sheet2" a mécht arithmetesch Operatiounen op de Wäerter. Déi resultéierend Wäerter ginn an der Kolonn A vum aktuellen aktive Aarbechtsblat gedréckt.

Dëse Makro illustréiert:

Innovatioun Newsletter
Verpasst net déi wichtegst Neiegkeeten iwwer Innovatioun. Registréiert Iech fir se per E-Mail ze kréien.
  • Variabel Deklaratioune;
  • Excel Objekter (speziell d'Benotzung vum Set Schlësselwuert a wéi Zougang zum 'Columns' Objet vum 'Sheets' Objet);
  • En Zyklus Do Until;
  • Zougang zu Aarbechtsblieder an Zellbereich am aktuellen Excel-Aarbechtsbuch.
' 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 Beispill mat Ännerung Datum Recording

Loosst eis en einfachen VBA Makro schreiwen, dee brennt wann eng Zell an engem spezifesche Beräich vun eisem Blat aktualiséiert gëtt. Ugeholl Dir wëllt Ännerungen an der Kolonn B (B4 bis B11) verfollegen an den Datum an d'Zäit vun der Ännerung an der Kolonn A notéieren.
Loosst eis esou virugoen:

  • An der Tab Developer klickt op Optioun "Visual Basic" fir de VBA Editor opzemaachen.
  • Am VBA Editor, duebelklickt op de Code Editor am Zesummenhang mat Sheet2.
  • Wielt Worksheet vun der rietser (oder lénkser) Tab a wielt d'Optioun änneren.
  • Add VBA Code:
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

Späichert d'Aarbechtsbuch mat Makroen aktivéiert (zum Beispill als .xlsm-Datei).


Elo, all Kéier wann mir eng Zell an der Kolonn B aktualiséieren (vun der Zeil 1 bis an der Zeil 10), wäert d'Zelle an der Kolonn A automatesch den aktuellen Datum an d'Zäit weisen.

Ercole Palmeri

Innovatioun Newsletter
Verpasst net déi wichtegst Neiegkeeten iwwer Innovatioun. Registréiert Iech fir se per E-Mail ze kréien.

Recent Artikelen

Veeam huet déi ëmfaassendst Ënnerstëtzung fir Ransomware, vu Schutz bis Äntwert an Erhuelung

Coveware vu Veeam wäert weider Cyber ​​Erpressung Tëschefall Äntwert Servicer ubidden. Coveware wäert Forensik a Sanéierungsfäegkeeten ubidden ...

23 Abrëll 2024

Gréng an Digital Revolutioun: Wéi Predictive Maintenance Transforméiert d'Ueleg- a Gasindustrie

Predictive Maintenance revolutionéiert den Ueleg- a Gassektor, mat enger innovativer a proaktiver Approche fir d'Planzemanagement.…

22 Abrëll 2024

UK Antitrust Reguléierer erhéicht BigTech Alarm iwwer GenAI

De UK CMA huet eng Warnung iwwer dem Big Tech säi Verhalen um kënschtlechen Intelligenz Maart erausginn. Do…

18 Abrëll 2024

Casa Green: Energierevolutioun fir eng nohalteg Zukunft an Italien

De "Green Houses" Dekret, formuléiert vun der Europäescher Unioun fir d'Energieeffizienz vu Gebaier ze verbesseren, huet säi legislative Prozess ofgeschloss mat ...

18 Abrëll 2024