Como insertar un titulo y una fórmula de excel en una macro

Esta pregunta se la había dirigido antes a la Sra. Elsa M., pero ahora se encuentra ocupada, así que por favor permítanme, una pregunta respecto al archivo en excel en el que muy amablemente me ha estado colaborando:

1. La columnas I y J de "Hoja1", contienen una fórmula que deseo incluir en el Sub pase_Hoja1 () ¿Qué instrucciones inserto?
Columna I,4 (Formula): =SI(F4="X";H4;0)
Columna J,4 (Formula): =SI(F4="X";0;H4)

Transcribo macro:
Sub pase_Hoja1()
'x Elsamatilde
'se ejecuta al completar todo el formato, puede ser antes o después de imprimir.
'se graban los campos en Hoja1.
Set ho1 = Sheets("Hoja1")
'se ubica la primer fila libre
nLin = ho1.Range("A" & Rows.Count).End(xlUp).Row + 1
'se pasan datos de la factura a la fila libre
ho1.Cells(nLin, 1) = Range("U3")
ho1.Cells(nLin, 2) = Range("U4")
ho1.Cells(nLin, 3) = Range("D8")
ho1.Cells(nLin, 4) = Range("D6")
ho1.Cells(nLin, 5) = Range("D7")
ho1.Cells(nLin, 6) = Range("P16")
ho1.Cells(nLin, 7) = Range("Q17")
ho1.Cells(nLin, 8) = Range("V16")

End Sub

2. Y en este mismo sentido ¿cómo incluir en Sub pase_Hoja1() la información de la fila 26 (que seria la ultima fila de la página 1) para que se repita en la ultima fila de las páginas posteriores (Página 2 en fila 49, página 3 seria en la fila 72...) ¿Así cómo su fórmula en I26 y J26?.
Columna I,26 (Formula): =SUMA(I4:I25)
Columna J,26 (Formula): =SUMA(J4:J25)

1 Respuesta

Respuesta
1

Creo habértelo comentado pero aclaro nuevamente aquí:

La 1er fila libre para colocar los datos se busca desde abajo hacia arriba con la instrucción:

'se ubica la primer fila libre
nLin = ho1.Range("A" & Rows.Count).End(xlUp).Row + 1

Entonces ahora colocaste un título en celda combinada que abarca también la col A. Solo debes quitar la combinación y combinarla a partir de B:E.

Sdos!

Así te quedaría la macro. No olvides quitar la combinación de la col A.

Sub pase_Hoja1()
'x Elsamatilde
'se ejecuta al completar todo el formato, puede ser antes o después de imprimir.
'se graban los campos en Hoja1.
Set ho1 = Sheets("Hoja1")
'se ubica la primer fila libre. Atención: La col A debe quedar libre
    nLin = ho1.Range("A" & Rows.Count).End(xlUp).Row + 1
'controla si se trata de la fila de Total, en ese caso suma 1 a la variable de fila
If UCase(Left(ho1.Range("B" & nLin), 5)) = "TOTAL" Then
    'copia la fila de total a 23 filas más abajo
    ho1.Range("A" & nLin & ":L" & nLin).Copy Destination:=ho1.Range("A" & nLin + 23)
    nLin = nLin + 1
End If
'se pasan datos de la factura a la fila libre
    ho1.Cells(nLin, 1) = Range("U3")
    ho1.Cells(nLin, 2) = Range("U4")
    ho1.Cells(nLin, 3) = Range("D8")
    ho1.Cells(nLin, 4) = Range("D6")
    ho1.Cells(nLin, 5) = Range("D7")
    ho1.Cells(nLin, 6) = Range("P16")
    ho1.Cells(nLin, 7) = Range("Q17")
    ho1.Cells(nLin, 8) = Range("V16")
   'completar el resto de los campos.
End Sub

Te envío tu libro para que lo pruebes.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas