Estoy intentando esta macro de celda libre de un rango de celdas

Esta es la macro que quiero hacer:

Sub Copiar_a_Registro()
'Hoja activa

Range ("G10")
Range ("G42")

'Hoja destino ("Provedores")

Sheets("Provedores").Select
filalibre = Range("B5:B37").End(xlUp).Row + 1
If filalibre < 5 Then filalibre = 5
Cells(filalibre, 2) = ActiveSheet

End Sub

Pero no me sale, si podéis ayudarme.

1 respuesta

Respuesta
1

La fila libre se obtiene de esta forma.

Sub UltimaFila()
    uf = Sheets("Proveedores").Range("A" & Rows.Count).End(xlUp).Row + 1
    If uf < 5 Then uf = 5
End Sub

Creo que así quedaría tu macro

Sub Copiar_a_Registro()
'Act.Dante Amor
    uf = Sheets("Proveedores").Range("B" & Rows.Count).End(xlUp).Row + 1
    If uf < 5 Then uf = 5
    Range("G10").Copy Sheets("Proveedores").Range("B" & uf)
    Range("G42").Copy Sheets("Proveedores").Range("C" & uf)
End Sub

en esta instrucción

uf = Sheets("Proveedores").Range("B" & Rows.Count).End(xlUp).Row + 1

Tienes que poner la columna de la que quieres la última fila, en este caso estoy poniendo la columna "B"

Después estoy copiando la celda G10 a "proveedores" en la última fila de "B" y la celda G42 en la columna C.

Si le falta algo a la macro, dime exactamente qué quieres copiar y en dónde lo quieres pegar y te hago los cambios.

Saludos. Dante Amor

Gracias Dante.

He puesto la macro así:

Sub UltimaFila()

'Hoja activa

Range ("G10")
Range ("G42")

'Hoja destino ("Provedores")

Sheets("Provedores").Select
uf = Sheets("Proveedores").Range("B5:B37" & Rows.Count).End(xlUp).Row + 1
If uf < 5 Then uf = 5
End Sub

Y no me sale.

Un saludo

Me sale error en:

uf = Sheets("Proveedores").Range("B" & Rows.Count).End(xlUp).Row + 1

Me sale a depurar y yo necesitaría el rango de fila libre que sea dentro de:

Range("B5:B37")

Un saludo

Pero no me dices qué quieres copiar

Y a dónde lo quieres pegar

Esto que estás poniendo:

Range ("G10")
Range ("G42")

No significa nada, tienes que poner una instrucción, por ejemplo

Range ("G10"). Copy

Y el lugar en donde quieras pegarlo

Range ("G42"). Copy

Y el destino hoja. Celda en donde lo quieres pegar

He puesto:

'Act.Dante Amor
uf = Sheets("Proveedores").Range("B" & Rows.Count).End(xlUp).Row + 1
If uf < 5 Then uf = 5
Range("G10").Copy Sheets("Proveedores").Range("B" & uf)
Range("G42").Copy Sheets("Proveedores").Range("C" & uf)

Me sale error en:

uf = Sheets("Proveedores").Range("B" & Rows.Count).End(xlUp).Row + 1

¿Tienes una hoja que se llame "proveedores"?

¿Qué error te envía?

Soy mas burro que un arado.

esa linea solucionado tenia puesto Provedores con una e.

Ahora me da error en:

Range("G10").Copy Sheets("Proveedores").Range("B" & uf)
Range("G42").Copy Sheets("Proveedores").Range("C" & uf)

Ademas, necesito en vez de :

uf = Sheets("Proveedores").Range("B" & Rows.Count).End(xlUp).Row + 1

Sea algo asi :

uf = Sheets("Proveedores").Range("B5:B37" & Rows.Count).End(xlUp).Row + 1

Porque por debajo, lo tengo ocupado

Un saludo

Ejecuta la siguiente macro en la hoja origen

Sub copiar()
'Por.Dante Amor
    Set h1 = ActiveSheet
    Set h2 = Sheets("Proveedores")
    i = 5
    Do While h2.Cells(i, "B") <> ""
        i = i + 1
    Loop
    H1. Range("G10"). Copy h2.Range("B" & i)
    H1. Range("G42"). Copy h2.Range("C" & i)
End Sub

GRACIAS DANTE.

Perfecto, me falta que no te lo dije, pegar  solo valores-

Otro saludo

Omitiste varios detalles

Esta es con pegado especial

Sub copiar()
'Por.Dante Amor
    Set h1 = ActiveSheet
    Set h2 = Sheets("Proveedores")
    i = 5
    Do While h2.Cells(i, "B") <> ""
        i = i + 1
    Loop
    h1.Range("G10").Copy
    h2.Range("B" & i).PasteSpecial Paste:=xlPasteValues
    h1.Range("G42").Copy
    h2.Range("C" & i).PasteSpecial Paste:=xlPasteValues
End Sub

Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas