Artiklar

Exempel på Excel-makron skrivna med VBA

Följande enkla Excel-makroexempel skrevs med VBA 

Beräknad lästid: 3 minuter

VBA-exempel med Array

Följande underprocedur läser värden från celler i kolumn A i det aktiva kalkylbladet, tills det stöter på en tom cell. Värdena lagras i en array. Detta enkla Excel-makroexempel illustrerar användningen av:

  • Variabla deklarationer;
  • Dynamiska arrayer;
  • En cykel Do Until;
  • Se celler i det aktuella Excel-kalkylbladet;
  • VBA-funktionen Ubound inbyggd (som returnerar det högsta indexet för en array).
' 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

Proceduren lagrar värdena i kolumn A i det aktiva kalkylbladet i en array, notera att:

  • Cykeln Do Until extraherar värdena för varje cell i kolumn A i det aktiva kalkylbladet, och ignorerar tomma celler
  • Skicket "If UBound(dCellValues) < iRow” kontrollerar att dCellValues-arrayen är tillräckligt stor för att hålla informationen, om inte, använd ReDim för att öka storleken på arrayen med 10
  • Slutligen utbildning​​dCellValues(iRow) = Cells(iRow, 1).Value” Lagrar den aktuella cellen i CellValues-arrayen

VBA-exempel med matematiska operationer

Följande underprocedur läser värdena från kolumn A i kalkylbladet med namnet "Sheet2" och utför aritmetiska operationer på värdena. De resulterande värdena skrivs ut i kolumn A i det aktuella aktiva kalkylbladet.

Detta makro illustrerar:

Nyhetsbrev för innovation
Missa inte de viktigaste nyheterna om innovation. Registrera dig för att få dem via e-post.
  • Variabla deklarationer;
  • Excel-objekt (särskilt användning av nyckelordet Set och hur man kommer åt objektet 'Kolumner' från objektet 'Sheets');
  • En cykel Do Until;
  • Få åtkomst till kalkylblad och cellintervall i den aktuella Excel-arbetsboken.
' 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-exempel med inspelning av ändringsdatum

Låt oss skriva ett enkelt VBA-makro som aktiveras när en cell i ett specifikt område av vårt ark uppdateras. Anta att du vill spåra ändringar i kolumn B (B4 till B11) och registrera datum och tid för ändringen i kolumn A.
Låt oss fortsätta så här:

  • På fliken Developer klicka på alternativet "Visual Basic” för att öppna VBA-redigeraren.
  • I VBA-redigeraren dubbelklickar du på kodredigeraren som är relaterad till Sheet2.
  • Välj Kalkylblad från den högra (eller vänster) fliken och välj alternativet Ändra.
  • Lägg till 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

Spara arbetsboken med makron aktiverade (till exempel som en .xlsm-fil).


Nu, varje gång vi uppdaterar en cell i kolumn B (från rad 1 till rad 10), kommer cellen i kolumn A automatiskt att visa aktuellt datum och tid.

Ercole Palmeri

Nyhetsbrev för innovation
Missa inte de viktigaste nyheterna om innovation. Registrera dig för att få dem via e-post.

Articoli recenti

Veeam har det mest omfattande stödet för ransomware, från skydd till svar och återställning

Coveware by Veeam kommer att fortsätta att tillhandahålla svarstjänster för cyberutpressning. Coveware kommer att erbjuda kriminaltekniska och saneringsmöjligheter...

23 April 2024

Grön och digital revolution: Hur prediktivt underhåll förändrar olje- och gasindustrin

Förutsägande underhåll revolutionerar olje- och gassektorn, med ett innovativt och proaktivt förhållningssätt till anläggningsförvaltning.…

22 April 2024

Brittisk antitrustregulator väcker larm över BigTech över GenAI

UK CMA har utfärdat en varning om Big Techs beteende på marknaden för artificiell intelligens. Där…

18 April 2024

Casa Green: energirevolution för en hållbar framtid i Italien

Dekretet "Gröna hus", formulerat av Europeiska unionen för att förbättra energieffektiviteten i byggnader, har avslutat sin lagstiftningsprocess med...

18 April 2024