Soporte para documentar una macro

Para Dante:

Hola Dante, tu me apoyaste con una macro la cual me resuelve mucho tiempo en proceso, con el afán de aprender quisiera tu apoyo para que me la puedas documentar y así ir ampliando los conocimientos en VBA.

Te anexo la macro que me creaste y vengo usando, espero te des un tiempo y puedas ayudarme para ir comprendiendo.

Sub IgualarCantidades()
'Por.Dante Amor
    Application.ScreenUpdating = False
    For i = Range("F" & Rows.Count).End(xlUp).Row To 2 Step -1
        If Cells(i, "F") > 1 Then
            n = Cells(i, "F")
            Rows(i + 1 & ":" & i + n - 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
            Range("F" & i & ":F" & i + n - 1) = 1
        End If
    Next
    Application.ScreenUpdating = True
    MsgBox "Terminado", vbInformation
End Sub

1 Respuesta

Respuesta
2

H o l a:

Te anexo la documentación:

Sub IgualarCantidades()
'Por.Dante Amor
    'Se desactiva la actualización en pantalla, esto hace que la macro se ejecute "en segundo plano",
 'lo que hace que la macro se ejecute más rápido
    Application.ScreenUpdating = False
    '
    'Inicia un ciclo, desde la última fila con datos de la columna F, hasta la fila, es decir,
 'el ciclo va de atrás hacia adelante, es por eso que tiene el "step -1"
    For i = Range("F" & Rows.Count).End(xlUp).Row To 2 Step -1
        '
        'pregunda si la celda de la columna "F" de la fila según el valor de la variable i, es mayor a 1
        If Cells(i, "F") > 1 Then
            'si es mayor a 1 entonces la variable n toma el valor de dicha celda
            n = Cells(i, "F")
            'inserta el número de filas según el contenido de n
            Rows(i + 1 & ":" & i + n - 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
            'rellena el rango de las celdas insertadas de la columna F con uno (1)
            Range("F" & i & ":F" & i + n - 1) = 1
        'fin de la pregunta
        End If
    'Realiza otro ciclo si todavía no llega a la fila 2
    Next
    'activa nuevamente la actualización de la pantalla para que se vean los resultados
    Application.ScreenUpdating = True
    'envía un mensaje a pantalla con el texto "Terminado"
    MsgBox "Terminado", vbInformation
'Fin de la macro
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas