Macro: Repetir rutina 05 veces uso de For i

Tengo la siguiente rutina que necesito que se repita solo 05 veces estoy utilizando For i pero no corre... ¿Me podrán ayudar?

Sub ArmarFila()
For i = 1 To 5
'Sentencia que permite ocultar la operación y flujo del programa
Dim filaUlt As Long
filaUlt = Sheets("Hoja2").Range("A65536").End(xlUp).Row + 1
Sheets("Hoja2").Cells(filaUlt, 1) = Sheets("Hoja2").Range("A26")
Sheets("Hoja2").Cells(filaUlt, 2) = Sheets("Hoja2").Range("B26")
Sheets("Hoja2").Cells(filaUlt, 3) = Sheets("Hoja2").Range("C26")
Sheets("Hoja2").Cells(filaUlt, 4) = Sheets("Hoja2").Range("D26")
Next i
'MsgBox "Ya tiene registrado 05 cambios de equipos", vbInformation, "TimeWork"
End Sub

Respuesta
1

Prueba esta macro

Sub armar_filas()
For i = 1 To 5
    Set datos = Range("a26").CurrentRegion:
    With datos
        filaUlt = .Rows.Count:  .Rows(filaUlt + 1).Value = .Rows(1).Value
    End With
Next i
End Sub

1 respuesta más de otro experto

Respuesta
2

Tienes que tener información en la celda A26

Prueba con lo siguiente:

Sub ArmarFila()
    If Sheets("Hoja2").Range("A26") = "" Then
        MsgBox "Falta dato en la celda A26"
        Exit Sub
    End If
    For i = 1 To 5
        'Sentencia que permite ocultar la operación y flujo del programa
        Dim filaUlt As Long
        filaUlt = Sheets("Hoja2").Range("A65536").End(xlUp).Row + 1
        Sheets("Hoja2").Cells(filaUlt, 1) = Sheets("Hoja2"). Range("A26")
        Sheets("Hoja2").Cells(filaUlt, 2) = Sheets("Hoja2").Range("B26")
        Sheets("Hoja2").Cells(filaUlt, 3) = Sheets("Hoja2").Range("C26")
        Sheets("Hoja2").Cells(filaUlt, 4) = Sheets("Hoja2").Range("D26")
    Next i
    'MsgBox "Ya tiene registrado 05 cambios de equipos", vbInformation, "TimeWork"
    MsgBox "Los datos se agregaron en la fila " & filaUlt
End Sub

O no está poniendo nada, porque no tienes datos en las celdas A26, B26, C26 y D26; o te está poniendo los datos muy abajo y no los ves. Te puse un msgbox para que veas en cuál fila se están agregando los datos.

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Gracias por responderme estimado Dante Amor, detallo lo siguiente:

  1. En Hoja2 rango A1:F18,  pego unos datos.
  2. En A26,B26,C26 y D26 extraigo unos datos que he pegado.
  3. Cuando corre la rutina, lo que hace es que los datos de A26,B26,C26 y D26 copia y pega en la siguiente fila vacía o sea A27,B27,C27 y D27 y si inserto nuevo datos, corre la rutina y esta vez lo pega en A28,B28,C28 y D28 y asi sucesivamente hasta completar cinco veces ya que el formato que se utiliza solo acepta de 01 a 05 cambios.
  4. Lo que deseo es que la rutina líneas abajo lo pueda repetir 05 veces: Quizás poniendo un msgbox vb YesNo que me diga si deseo agregar otro cambio en donde: a) Si es NO que imprima el formato pero si es SI repita el proceso
            Dim filaUlt As Long
            filaUlt = Sheets("Hoja2").Range("A65536").End(xlUp).Row + 1
            Sheets("Hoja2").Cells(filaUlt, 1) = Sheets("Hoja2"). Range("A26")
            Sheets("Hoja2").Cells(filaUlt, 2) = Sheets("Hoja2").Range("B26")
            Sheets("Hoja2").Cells(filaUlt, 3) = Sheets("Hoja2").Range("C26")
            Sheets("Hoja2").Cells(filaUlt, 4) = Sheets("Hoja2").Range("D26")

Espero haberme explicado bien

Atentamente,

Alberto Meza

No entendí.

Quieres que lo haga 5 veces o que revise cuántas veces se ha hecho; si ya se hizo 5 veces, es decir, si ya se llenaron las celdas A26, A27, A28, A29 y A30, ¿ya no debe hacerlo?

En verdad no entiendo qué necesitas. No me expliques con código VBA, no te preocupes por la macro, yo te ayudo con eso.

Lo que necesito es que me expliques con ejemplos paso a paso qué requieres.

Estimado Danta Amor:

Sorry si no me explique bien. Lo que deseo es que:

que revise cuántas veces se ha hecho; si ya se hizo 5 veces,  y se llenaron las celdas A26, A27, A28, A29 y A30, ¿ya no debe hacerlo? e indicar con msgbox ..." se completaron sus cinco cambios"

Te anexo la macro actualizada

Sub ArmarFila()
    vacio = False
    Set h2 = Sheets("Hoja2")
    For i = 27 To 30
        'Sentencia que permite ocultar la operación y flujo del programa
        If h2.Cells(i, "A") = "" Then
            vacio = True
            Exit For
        End If
    Next i
    If vacio Then
        h2.Cells(i, "A") = h2.Range("A26")
        h2.Cells(i, "B") = h2.Range("B26")
        h2.Cells(i, "C") = h2.Range("C26")
        h2.Cells(i, "D") = h2.Range("D26")
        MsgBox "Datos copiados"
    Else
        MsgBox "Ya tiene registrado 05 cambios de equipos", vbInformation, "TimeWork"
    End If
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda o si necesitas que te ayude a adaptar el código

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas