Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Ejemplo de Uso de DoLoop aplicado a llenado Fechas

| 4 comentarios

El Do...Loop permite realizar una un procedimiento de forma iterativa mientras se cumpla una condición definida por el usuario.

Generalmente, el Do...Loop se combina con las condiciones While y Until. Para ello se define un contador, que sera el que romperá o cumplirá la condición definida por el usuario.

A diferencia de un llenado en bloques se podría hacer usando combinaciones con otras funciones o variables y que podría ser más rapido, el DoLoop permite tener una revisión más estricta y permite detectar error en los datos.

Utilizaremos la función DoLoop para el llenado de unas fechas de Venta de solicitudes. En caso en la base de datos con la que se hará el cruce, no haya información disponible, se tomará como fecha de venta el último estado registrado. Para ello emplearemos condicionales y cambios de tipo de variable.

A continuación se presenta el código usado:

Sub CompletarFecha()
'Definicion de Variables
Dim FilaFinal As Long
Dim FilaActual As Long
Dim ValorActual As String

FilaFinal = Range("B1048576").End(xlUp).Row
FilaActual = 5

'Defincion de la condicion de DoUntilLoop
Do Until FilaActual > FilaFinal

Cells(FilaActual, 3).Select
ActiveCell.FormulaR1C1 = "=+VLOOKUP(RC2,HojaQuery!R2C2:R26873C3,2,0)"
ActiveCell.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ValorActual = CStr(ActiveCell)
Application.CutCopyMode = False

If ValorActual = "Error 2042" Then
'Aqui se cambia a la fecha ultimo estado registrado
ActiveCell = Cells(FilaActual, 4)
ActiveCell.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ElseIf ValorActual = Empty Then
'Aqui se cambia a la fecha ultimo estado registrado
ActiveCell = Cells(FilaActual, 4)
ActiveCell.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Else
'Aqui se cambia a la fecha ultimo estado registrado
ActiveCell.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

End If
Application.CutCopyMode = False
FilaActual = FilaActual + 1

Loop
MsgBox "Se terminó el llenado de Fecha, Gracias!", vbOKOnly, "Sistema"
End Sub

Ejemplo Do Loop (VBA)

Elaborado por: Jesús Tapia

4 comentarios

  1. BUENOS DIAS MUCHAS GRACIAS POR EL APORTE Y ME GUSTARIA SABER SI AL CAMBIAR DE DIFERENTES COLUMNAS TENGO QUE CAMBIAR DATOS DE ESTA FILA Y QUE SIGNIFICAN
    ActiveCell.FormulaR1C1 = "=+VLOOKUP(RC2,HojaQuery!R2C2:R26873C3,2,0)"

  2. Hola Alexander y Paola

    Ese contenido fue obtenido con el grabador de macros, formulaR1C1 equivale al offset ... en este caso solo coloca el resultado en la celda activa ... y vlookup equivale al buscarv

    https://www.excel-avanzado.com/7469/uso-de-worksheetfunction-vlookup.html

  3. Excelentes explicaciones.
    Estimado Fernando, cual libro recomendarias para aprender todos los comandos de VBA.

    Saludos

    • Gracias Victor

      Te sugiero que uses https://www.excel-avanzado.com/introduccion-a-las-macros

      Saludos

Deja una respuesta

Los campos requeridos estan marcados con *.