Aclaración de la macro excel VBA

H o l a 

Dante buenos días por favor explica con comentarios este código que lo entiendo a cierta parte saludos!

Sub el()
'Por.Dante Amor
    Set h1 = Sheets("ORIGEN")
    Set h2 = Sheets("RESULTADO")
    tabla = h1.UsedRange.Address
    h2.Cells.Clear
    '
    fini = h1.Range(tabla).Cells(1, 1).Row
    cini = h1.Range(tabla).Cells(1, 1).Column
    ffin = h1.Range(tabla).Rows.Count + fini - 1
    cfin = h1.Range(tabla).Columns.Count + cini - 1
    '
    k = 4
    m = 2
    For i = fini + 1 To ffin
        For j = cini + 1 To cfin
            h2.Cells(k, m) = h1.Cells(i, cini)
            h2.Cells(k, m + 1) = h1.Cells(fini, j)
            h2.Cells(k, m + 2) = h1.Cells(i, j)
            k = k + 1
        Next
    Next
    MsgBox "Fin"
End Sub

1 respuesta

Respuesta
2

Va:

Sub el()
'Por.Dante Amor
    Set h1 = Sheets("ORIGEN")
    Set h2 = Sheets("RESULTADO")
'obtiene la dirección del rango usado en la hoja
    tabla = h1.UsedRange.Address
    h2.Cells.Clear
    '
'obtiene la primera fila del rango
    fini = h1.Range(tabla).Cells(1, 1).Row
'obtiene la primera columna del rango
    cini = h1.Range(tabla).Cells(1, 1).Column
'obtiene la última fila del rango
'cuenta el número de filas del rango, le suma la fila inicial
'y le resta uno, para obtenerla
    ffin = h1.Range(tabla).Rows.Count + fini - 1
'obtiene la última columna del rango
'lo mismo que la última fila, pero con columnas
    cfin = h1.Range(tabla).Columns.Count + cini - 1
    '
    k = 4
    m = 2
'ciclo de filas
'para cada fila en el rango
    For i = fini + 1 To ffin
'ciclo de columnas
'para cada columna del rango
        For j = cini + 1 To cfin
'en la fila, col de la hoja2 pone el dato de la fila columna inicial 
'digamos que es el margen derecho
            h2.Cells(k, m) = h1.Cells(i, cini)
'en la siguiente columna pone el dato de la fila inicial
'digamos que es el encabezado
            h2.Cells(k, m + 1) = h1.Cells(fini, j)
'en la siguiente columna pon el dato del cruce
            h2.Cells(k, m + 2) = h1.Cells(i, j)
'incrementa la fila de la hoja2
            k = k + 1
        Next
    Next
    MsgBox "Fin"
End Sub

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas