articuli

Esempi di Macros Excel scritte cù VBA

I seguenti esempi di macro Excel simplici sò stati scritti cù VBA 

Tempu di lettura stimatu: 3 minuti

Esempiu VBA cù Array

A seguente prucedura Sub leghje i valori da e cellule in a colonna A di u fogliu di travagliu attivu, finu à ch'ellu scontra una cellula bianca. I valori sò almacenati in un array. Stu sèmplice esempiu macro Excel illustra l'usu di:

  • dichjarazioni variàbbili;
  • matrici dinamiche;
  • Un ciclu Do Until;
  • Riferite à e cellule in u fogliu di travagliu Excel attuale;
  • A funzione VBA Ubound builtin (chì torna l'indice più altu di un 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

A prucedura guarda i valori in a colonna A di u fogliu di travagliu attivu in un array, nota chì:

  • U ciclu Do Until estrae i valori di ogni cellula in a colonna A di u fogliu di travagliu attivu, ignorendu e cellule in biancu
  • a cundizione "If UBound(dCellValues) < iRow" verifica chì a matrice dCellValues ​​hè abbastanza grande per mantene l'infurmazioni, se no, utilizate ReDim per aumentà a dimensione di l'array di 10.
  • Infine, l'educazione​​dCellValues(iRow) = Cells(iRow, 1).Value” Memorizza a cellula attuale in a matrice CellValues

Esempiu VBA cù operazioni matematiche

A seguita sottu prucedura leghje i valori da a colonna A di u fogliu di travagliu chjamatu "Sheet2" è eseguisce operazioni aritmetiche nantu à i valori. I valori risultanti sò stampati in a colonna A di u fogliu di travagliu attivu attuale.

Questa macro illustra:

Newsletter di l'innovazione
Ùn mancate micca e nutizie più impurtanti nantu à l'innuvazione. Iscriviti per riceveli per email.
  • dichjarazioni variàbbili;
  • Oggetti Excel (in particulare, usu di a chjave Set è cumu accede à l'ughjettu "Colonne" da l'ughjettu "Fogli");
  • Un ciclu Do Until;
  • Accede à i fogli di travagliu è i range di cellule in u libru di travagliu Excel attuale.
' 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

Esempiu VBA cù registrazione di data di mudificazione

Scrivemu una macro VBA simplice chì spara quandu una cellula in un intervallu specificu di a nostra foglia hè aghjurnata. Suppone chì vulete seguità i cambiamenti in a colonna B (B4 à B11) è registrà a data è l'ora di u cambiamentu in a colonna A.
Procedemu cusì:

  • In a tabulazione Developer cliccate nantu à l'opzione "Visual Basic"per apre l'editore VBA.
  • In l'editore VBA, fate doppiu clic nantu à l'editore di codice in relazione à Sheet2.
  • Sceglie Worksheet da a tabulazione destra (o sinistra) è selezziunate l'opzione Cambia.
  • Aghjunghjite u codice 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

Salvà u libru di travagliu cù macros attivati ​​(per esempiu, cum'è un schedariu .xlsm).


Avà, ogni volta chì aghjurnà una cellula in a colonna B (da a fila 1 à a fila 10), a cellula in a colonna A mostrarà automaticamente a data è l'ora attuale.

Ercole Palmeri

Newsletter di l'innovazione
Ùn mancate micca e nutizie più impurtanti nantu à l'innuvazione. Iscriviti per riceveli per email.

Articuli recenti

Veeam presenta u supportu più cumpletu per ransomware, da a prutezzione à a risposta è a ricuperazione

Coveware da Veeam continuerà à furnisce servizii di risposta à l'incidentu di l'estorsione cibernetica. Coveware offre capacità forensiche è di rimediazione ...

23 April 2024

Rivuluzione Verda è Digitale: Cumu a Manutenzione Predittiva Trasforma l'Industria Oil & Gas

U mantenimentu predittivu rivoluziona u settore di petroliu è gasu, cù un approcciu innovativu è proattivu à a gestione di e piante.

22 April 2024

U regulatore antitrust britannicu suscite l'alarma di BigTech annantu à GenAI

A CMA di u Regnu Unitu hà emessu un avvisu annantu à u cumpurtamentu di Big Tech in u mercatu di l'intelligenza artificiale. Ci…

18 April 2024

Casa Green: rivoluzione energetica per un futuru sustenibile in Italia

U decretu "Green Houses", formulatu da l'Unione Europea per rinfurzà l'efficienza energetica di l'edificazioni, hà cunclusu u so prucessu legislativu cù ...

18 April 2024