bienes

Ejemplos de Macros de Excel escritas con VBA

Los siguientes ejemplos simples de macros de Excel se escribieron usando VBA 

Tiempo estimado de lectura: 3 acta

Ejemplo de VBA usando Array

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:

  • Declaraciones de variables;
  • Matrices dinámicas;
  • Un ciclo Do Until;
  • Consulte las celdas de la hoja de cálculo actual de Excel;
  • La función VBA 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:

  • El ciclo Do Until extrae los valores de cada celda en la columna A de la hoja de trabajo activa, ignorando las celdas en blanco
  • La condición "If 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 10
  • Finalmente, la educación​​dCellValues(iRow) = Cells(iRow, 1).Value”Almacena la celda actual en la matriz CellValues

Ejemplo de VBA con operaciones matemáticas.

El 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:

Boletín de innovación
No te pierdas las noticias más importantes sobre innovación. Regístrese para recibirlos por correo electrónico.
  • Declaraciones de variables;
  • Objetos de Excel (específicamente, uso de la palabra clave Set y cómo acceder al objeto 'Columnas' desde el objeto 'Hojas');
  • Un ciclo Do Until;
  • Acceda a hojas de trabajo y rangos de celdas en el libro de Excel actual.
' 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

Ejemplo de VBA con registro de fecha de modificación

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í:

  • En la pestaña Developer haga clic en la opción "Visual Basic”para abrir el editor VBA.
  • En el editor de VBA, haga doble clic en el editor de código relacionado con Sheet2.
  • Elija Hoja de trabajo en la pestaña derecha (o izquierda) y seleccione la opción Cambiar.
  • Agregue código 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

Boletín de innovación
No te pierdas las noticias más importantes sobre innovación. Regístrese para recibirlos por correo electrónico.

Artículos recientes

Veeam ofrece el soporte más completo para ransomware, desde protección hasta respuesta y recuperación.

Coveware by Veeam seguirá brindando servicios de respuesta a incidentes de extorsión cibernética. Coveware ofrecerá capacidades forenses y de remediación...

Abril 23 2024

Revolución verde y digital: cómo el mantenimiento predictivo está transformando la industria del petróleo y el gas

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.…

Abril 22 2024

El regulador antimonopolio del Reino Unido hace sonar la alarma de las BigTech sobre GenAI

La CMA del Reino Unido ha emitido una advertencia sobre el comportamiento de las Big Tech en el mercado de la inteligencia artificial. Allá…

Abril 18 2024

Casa Green: revolución energética para un futuro sostenible en Italia

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…

Abril 18 2024