Tiempo estimado de lectura: 3 acta
El siguiente procedimiento Sub lee valores de las celdas de la columna A de la hoja de trabajo activa, hasta que encuentra una celda en blanco. Los valores se almacenan en una matriz. Este sencillo ejemplo de macro de Excel ilustra el uso de:
Do Until
;Ubound
incorporado (que devuelve el índice más alto de una matriz).' 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
El procedimiento almacena los valores de la columna A de la hoja de trabajo activa en una matriz, tenga en cuenta que:
Do Until
extrae los valores de cada celda en la columna A de la hoja de trabajo activa, ignorando las celdas en blancoIf UBound(dCellValues) < iRow
”comprueba que la matriz dCellValues es lo suficientemente grande para contener la información; de lo contrario, use ReDim para aumentar el tamaño de la matriz en 10dCellValues(iRow) = Cells(iRow, 1).Value
”Almacena la celda actual en la matriz CellValuesEl siguiente subprocedimiento lee los valores de la columna A de la hoja de trabajo denominada "Hoja2" y realiza operaciones aritméticas con los valores. Los valores resultantes se imprimen en la columna A de la hoja de trabajo activa actual.
Esta macro ilustra:
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
Escribamos una macro VBA simple que se active cuando se actualice una celda en un rango específico de nuestra hoja. Suponga que desea realizar un seguimiento de los cambios en la columna B (B4 a B11) y registrar la fecha y hora del cambio en la columna A.
Procedamos así:
Developer
haga clic en la opción "Visual Basic
”para abrir el 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
Guarde el libro con las macros habilitadas (por ejemplo, como un archivo .xlsm).
Ahora, cada vez que actualicemos una celda en la columna B (de la fila 1 a la fila 10), la celda en la columna A mostrará automáticamente la fecha y hora actuales.
Ercole Palmeri
Coveware by Veeam seguirá brindando servicios de respuesta a incidentes de extorsión cibernética. Coveware ofrecerá capacidades forenses y de remediación...
El mantenimiento predictivo está revolucionando el sector del petróleo y el gas, con un enfoque innovador y proactivo para la gestión de plantas.…
La CMA del Reino Unido ha emitido una advertencia sobre el comportamiento de las Big Tech en el mercado de la inteligencia artificial. Allá…
El Decreto "Invernaderos", formulado por la Unión Europea para mejorar la eficiencia energética de los edificios, ha concluido su trámite legislativo con…