Indicar cuantas celdas arrastrar

Estimada Elsa usted me ayudo con este código y al colocarlo con el resto de las intrusiones que tenia funciono perfecto pero ahora quisiera, aumentarle algo mas.

Este es el código:

Range("B47:E47").Select

finfila = Selection.Row + Range("a2").Value

Selection.AutoFill Destination:=Range("B47:E" & finfila), Type:=xlFillDefault

Lo que quiero lograr es que al arrastrar, por ejemplo mas de 50 unidades osea al llegar a B97 en lugar de continuar hacia abajo, que continué en G48 (colocando la unidad N 51).

Espero explicarme, gracias desde ya.

1 respuesta

Respuesta
1

Mañana trataré de revisar tu consulta. No la finalices aún.

Aquí te dejo un aproximado... los comentarios te ayudarán a terminarla

Sub luctia()
'x Elsamatilde
Range("B47:E47").Select
finfila = Selection.Row + Range("a2").Value

'si no superamos las 50 se mantiene la instrucción original
If Range("A2") <= 50 Then
Selection.AutoFill Destination:=Range("B47:E" & finfila), Type:=xlFillDefault
Else

'si superamos los 50 se arrastra hasta la 97
Selection.AutoFill Destination:=Range("B47:E97"), Type:=xlFillDefault

'se calcula cuántas filas faltan

resto = Range("A2") - 50
'aquí se copia el contenido de B47:E97 a la celda G48:J48 y se copian formatos, fórmmulas o lo que hiciera falta

'FALTA: pode´s utilizar la grabadora para conseguir la instrucción
'luego se arrastra las filas que faltan desde G48:J... 48+resto

Range(G48:J48").Select
Selection.AutoFill Destination:=Range("G48:J" & resto), Type:=xlFillDefault

End If
End Sub

REvisá las cuentas en fórmula del 'resto', es probable que debas sumar o restar 1...

Gracias Elsa, ya copmplete la instrucción que faltaba, el código se ejecuta hasta donde debe seleccionar G48:J48, luego me da un error:

Se ha producido un error 1004 en tiempo de ejecución:

esta operación requiere que las celdas a combinar tengan el mismo tamaño.

porbe copiar formato de números y valores o números y formulas, también colocar el tamaño de las celdas de forma manual para que sean todas iguales, pero continua dando el error No se cual es el problema ya que lineas antes se utiliza la mismas instrucción para arrastrar sin problemas.

El mensaje es claro: 'celdas a combinar'... tenés celdas combinadas o en el origen o en el destino y así no las podes copiar .

En esta parte intentá colocando solamente la primer celda para que se ubique solo:

'aquí se copia el contenido de B47:E97 a la celda G48:J48

Por ej: Range("B47:E97").Copy Destination:=range("G48")

Si sigue dando algún error tenés que escribirme aquí la rutina tal como te quedó y aclarame tu versión Excel.

Range("B47:E47").Select 'arrastrar cantidad de unidades según tns
finfila = Selection.Row + Range("a2").Value
'si no superamos las 50 se mantiene la instrucción original
If Range("A2") <= 50 Then
Selection.AutoFill Destination:=Range("B47:E" & finfila), Type:=xlFillDefault
Else
'si superamos los 50 se arrastra hasta la 97
Selection.AutoFill Destination:=Range("B47:E97"), Type:=xlFillDefault
'se calcula cuántas filas faltan
resto = Range("A2") - 50
'aquí se copia el contenido de B47:E97 a la celda G48:J48 y se copian formatos, fórmmulas o lo que hiciera falta
'FALTA: pode´s utilizar la grabadora para conseguir la instrucción
'luego se arrastra las filas que faltan desde G48:J... 48+resto
Range("G47:J47").Select
Selection.AutoFill Destination:=Range("G47:J" & resto), Type:=xlFillDefault
End If

Yo tengo oculta la fila 47, donde esta en B47"0", en C47"una formula", D47"una formula". E47"una formula". y en G47"50", y en las otras tres celdas formulas.

Trabajo con la versión 2007.

¿Y dónde están las instrucciones que faltan?

Me decís: ya copmplete la instrucción que faltaba pero no está aquí, agregala manualmente con la grabadora encendida xq de eso depende el funcionamiento.

Si el rango G47:... tiene lo mismo que B47:E47 no hace falta, se arrastra como el otro.

Pero sino, si hay fórmulas tenés que revisar si al arrastrar no se cambian las referencias, y quizás tengas que ajustarlas o vas a dejar solo valores.

Y si hay celdas combinadas en alguno de los rangos (origen o destino) también tenés que ver qué hacer. Y cuando apagues la grabadora incluí esas líneas aquí y lo vemos.

Sdos

Elsa

Gracias Elsa como siempre de gran utilidad sus respuestas lo que hice fue modificar el código que me envío de esta manera

Range("B47:E47").Select
finfila = Selection.Row + Range("a2").Value
If Range("A2") <= 50 Then
Selection.AutoFill Destination:=Range("B47:E" & finfila), Type:=xlFillDefault
Else
Selection.AutoFill Destination:=Range("B47:E97"), Type:=xlFillDefault
resto = Selection.Row + Range("A2") - 50

range("G47:J47").Select
Selection.AutoFill Destination:=Range("G47:J" & resto), Type:=xlFillDefault
End If

Y funciona como deseaba gracias de nuevo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas