Buenos tardes, Dentro de un excel tengo una hoja con la BBDD donde cada linea corresponde a un report, en otra hoja tengo la plantilla del report. Tengo una macro que lo que hace básicamente es leer lo que pone en unas celdas concretas de una linea de la hoja BBDD y lo traslada a la plantilla (hoja report). Pero no soy capaz de hacer que cada vez que ejecute la macro lea la siguiente linea que ya ejecuto la macro. Es decir si le doy a la macro por primera vez me ejecuta sobre la fila 1, si le volviese a dar a la macro busco que leyese la fila 2, creo que sería Row +1. Sobre el comando de más abajo sería que cada vez que lea en P2 OKEY, monte el informe sobre ROW+1.
Adjunto también el excel con la macro. Espero que me podáis ayudar y muchas gracias
Sub Macro1()
'
' Macro1 Macro
'
'
ActiveCell.FormulaR1C1 = "=+BBDD!R[-3]C[11]"
Range("D5").Select
ActiveCell.FormulaR1C1 = "=+BBDD!R[-3]C[-3]"
Range("C8").Select
ActiveCell.FormulaR1C1 = "=+BBDD!R[-6]C"
Range("D8").Select
ActiveCell.FormulaR1C1 = "=+BBDD!R[-6]C"
Range("C11").Select
ActiveCell.FormulaR1C1 = "=+BBDD!R[-9]C[2]"
Range("D11").Select
ActiveCell.FormulaR1C1 = "=+BBDD!R[-9]C[2]"
Range("D12").Select
Sheets("BBDD").Select
Range("P2").Select
ActiveCell.FormulaR1C1 = "OKEY"
Range("P3").Select
End Sub
Gracias,
Adjunto | Tamaño |
---|---|
![]() | 17.4 KB |
Entonces entiendo que necesitarías en primer lugar encontrar la primera celda que no ponga OKEY en la tabla con los datos. Y cuando la encuentres, ejecutar la macro.
Además, tus fórmulas están definidas como referencias relativas a las posiciones de la hoja resumen, y esto habrá qeu sustituirlo por referencias a la fila que te interese. Las referencias absolutas no tienen el número entre corchetes. es decir:
la celda $A$1 sería la celda R1C1 (row 1, column 1)
la celda de arriba a la derecha sería R[-1]C[1] (-1 row, +1 column)
Así que por ejemplo puedes modificar tu macro de esta manera:
Sub Macro1()
'
' Macro1 Macro
'
Dim filaconeldatoquemeinteresa As Long
'
'Buscamos la primera celda sin OKEY
Sheets("BBDD").Select
Range("P2").Select
Do Until ActiveCell.Value <> "OKEY"
ActiveCell.Offset(1, 0).Select
Loop
filaconeldatoquemeinteresa = ActiveCell.Row 'guardamos el número de fila
'ahora vamos a la hoja del resumen
Sheets("REPORT").Select
ActiveCell.FormulaR1C1 = "=+BBDD!R" & filaconeldatoquemeinteresa & "C[11]"
Range("D5").Select
ActiveCell.FormulaR1C1 = "=+BBDD!R" & filaconeldatoquemeinteresa & "C[-3]"
Range("C8").Select
ActiveCell.FormulaR1C1 = "=+BBDD!R" & filaconeldatoquemeinteresa & "C"
Range("D8").Select
ActiveCell.FormulaR1C1 = "=+BBDD!R" & filaconeldatoquemeinteresa & "C"
Range("C11").Select
ActiveCell.FormulaR1C1 = "=+BBDD!R" & filaconeldatoquemeinteresa & "C[2]"
Range("D11").Select
ActiveCell.FormulaR1C1 = "=+BBDD!R" & filaconeldatoquemeinteresa & "C[2]"
Range("D12").Select
'marcamos la fila como OK
Sheets("BBDD").Select
ActiveCell.FormulaR1C1 = "OKEY" 'la celda activa se había quedado activada antes
End Sub
------
Ya sé Excel, pero necesito más.