Saltar linea

2 envíos / 0 nuevos
Último envío
calcoba
Imagen de calcoba
Offline
última acción: Hace 4 años 8 meses
alta: 25/06/2019 - 16:42
Puntos: 25
Saltar linea

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,

AdjuntoTamaño
File formula.xlsm17.4 KB
pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 4 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Entonces entiendo que

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.