Tempo di lettura stimato: 3 minuti
La seguente procedura Sub legge i valori dalle celle della colonna A del foglio di lavoro attivo, finché non incontra una cella vuota. I valori vengono memorizzati in un array. Questo semplice esempio di macro di Excel illustra l’uso di:
Do Until
;Ubound
incorporata (che restituisce l’indice più alto 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
La procedura memorizza i valori nella colonna A del foglio di lavoro attivo in un array, da osservare che:
Do Until
estrae i valori di ogni cella nella colonna A del foglio di lavoro attivo, ignorando le celle vuoteIf UBound(dCellValues) < iRow
” controlla che l’array dCellValues sia abbastanza grande per contenere le informazioni, in caso contrario, utilizza ReDim per aumentare la dimensione dell’array di 10dCellValues(iRow) = Cells(iRow, 1).Value
” Memorizza la cella corrente nell’array CellValuesLa seguente procedura Sub legge i valori dalla colonna A del foglio di lavoro denominato “Foglio2” ed esegue operazioni aritmetiche sui valori. I valori risultanti vengono stampati nella colonna A del foglio di lavoro attivo corrente.
Questa macro illustra:
Do Until
;' 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
Scriviamo una semplice macro VBA che si attiva quando viene aggiornata una cella in un intervallo specifico del nostro foglio. Supponiamo di voler tenere traccia delle modifiche nella colonna B (da B4 a B11) e registrare la data e l’ora della modifica nella colonna A.
Procediamo così:
Developer
clicca su opzione “Visual Basic
” per aprire l’editor 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
Salva la cartella di lavoro con le macro abilitate (ad esempio, come file .xlsm).
A questo punto, ogni volta che aggiorniamo una cella nella colonna B (da riga 1 a riga 10), la cella in colonna A visualizzerà automaticamente la data e l’ora correnti.
Ercole Palmeri
Coveware by Veeam continuerà a fornire servizi di risposta agli incidenti di cyber-estorsione. Coveware offrirà funzionalità di forensics e remediation…
La manutenzione predittiva sta rivoluzionando il settore dell'oil & gas, con un approccio innovativo e proattivo alla gestione degli impianti.…
La CMA del Regno Unito ha lanciato un avvertimento circa il comportamento delle Big Tech sul mercato dell’intelligenza artificiale. La…
Il Decreto "Case Green", formulato dall'Unione Europea per potenziare l'efficienza energetica degli edifici, ha concluso il suo iter legislativo con…