copiar celdas a otra hoja con macro omitiendo una columna

24/07/2011 - 04:48 por Sergio | Informe spam
Buenas tardes!

Me dirijo de nueva cuenta a los integrantes de este grupo para
solicitar ayuda, el asunto es el siguiente:

tengo este codigo:

Sub copiarceldas()
Dim rng As Range, i As Long, Rangos
Rangos = Array("B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9",
"B10", "B11", "B12", "B13", "B14", "B15", "B16", "B17", "B18")
With Sheets("BaseDatos")
Set rng = .Cells(.Rows.Count, "A").End(xlUp)
For i = LBound(Rangos) To UBound(Rangos)
rng.Offset(1, i).Value _
= Sheets("CAPTURA").Range(Rangos(i)).Value
Next i
End With

MsgBox Prompt:="O.K.! Oprime Aceptar para continuar"

End Sub

lo que realiza es que copia las celdas del array de la hoja CAPTURA
disponiendolos en la siguiente fila vacia de la Hoja BaseDatos, ("B2"
en la columna A, "B3" en la columna B, etc.,), el detalle es que en la
columna G de la hoja BaseDatos tengo formulas y cuando se copia la
celda "B8" (aunque la tengo vacia) me borra la formula. existe la
manera de modificar el codigo para que "omitiera" sobreescribir o
borrar el contenido de las celdas de la columna G de la hoja
Basedatos?, lo mas facil es poner la columna de las formulas al final,
pero no me sirve con esa disposicion.
esperando me puedan ayudar les mando un saludo.

Sergio Davalos

Preguntas similare

Leer las respuestas

#1 Cacho R
24/07/2011 - 18:53 | Informe spam
A ver si te entendí...
Quieres copiar en dos grupos:

-> Desde la columna A hasta la columna F lo contenido en el rango
B2:B7
-> Y desde la columna H hasta la columna R lo contenido en el rango
B8:B18

¿Es así?...

On 23 jul, 23:48, Sergio wrote:
Buenas tardes!

Me dirijo de nueva cuenta a los integrantes de este grupo para
solicitar ayuda, el asunto es el siguiente:

tengo este codigo:

Sub copiarceldas()
    Dim rng As Range, i As Long, Rangos
    Rangos = Array("B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9",
"B10", "B11", "B12", "B13", "B14", "B15", "B16", "B17", "B18")
    With Sheets("BaseDatos")
        Set rng = .Cells(.Rows.Count, "A").End(xlUp)
        For i = LBound(Rangos) To UBound(Rangos)
            rng.Offset(1, i).Value _
                = Sheets("CAPTURA").Range(Rangos(i)).Value
                Next i
        End With

        MsgBox Prompt:="O.K.! Oprime Aceptar para continuar"

End Sub

lo que realiza es que copia las celdas del array de la hoja CAPTURA
disponiendolos en la siguiente fila vacia de la Hoja BaseDatos, ("B2"
en la columna A, "B3" en la columna B, etc.,), el detalle es que en la
columna G de la hoja BaseDatos tengo formulas y cuando se copia la
celda "B8" (aunque la tengo vacia) me borra la formula. existe la
manera de modificar el codigo para que "omitiera" sobreescribir o
borrar el contenido de las celdas de la columna G de la hoja
Basedatos?, lo mas facil es poner la columna de las formulas al final,
pero no me sirve con esa disposicion.
esperando me puedan ayudar les mando un saludo.

Sergio Davalos
Respuesta Responder a este mensaje
#2 Sergio
24/07/2011 - 22:19 | Informe spam
Gracias por responder Cacho R

ya que lo mencionas (lo de copiar en dos grupos), creo que eso seria
una de las posibles soluciones:

copiar Desde la columna A hasta la columna F lo contenido en el rango


B2:B7

Y desde la columna H hasta la columna Q lo contenido en el rango


B9:B18 (porque B8 es una celda vacia)

Asi es como ocupo que se modifique el codigo, si es posible.

Saludos y gracias

Sergio Davalos.
Respuesta Responder a este mensaje
#3 Cacho R
24/07/2011 - 23:08 | Informe spam
Fíjate en algo así:

Sub CopiarCeldas2()
Dim LastRow As Long
With Worksheets("BaseDatos")
LastRow = 1 + .Cells(Rows.Count, "A").End(xlUp).Row
Worksheets("CAPTURA").[b2:b7].Copy
.Cells(LastRow, "A").PasteSpecial xlPasteValues, , , True
Worksheets("CAPTURA").[b9:b18].Copy
.Cells(LastRow, "H").PasteSpecial xlPasteValues, , , True
End With
Application.CutCopyMode = False
MsgBox Prompt:="O.K.! Oprime Aceptar para continuar"
End Sub

Saludos, Cacho R.


On 24 jul, 17:19, Sergio wrote:
Gracias por responder Cacho R

ya que lo mencionas (lo de copiar en dos grupos), creo que eso seria
una de las posibles soluciones:

>copiar Desde la columna A hasta la columna F lo contenido en el rango

B2:B7

>Y desde la columna H hasta la columna Q lo contenido en el rango

B9:B18 (porque B8 es una celda vacia)

Asi es como ocupo que se modifique el codigo, si es posible.

Saludos y gracias

Sergio Davalos.
Respuesta Responder a este mensaje
#4 Sergio
25/07/2011 - 05:11 | Informe spam
Gracias por darle seguimiento a mi consulta Cacho R

Apliqué el codigo que me propusiste y quedó perfecto, cumple con mis
requerimientos
solo un detalle... al correr la macro parpadea la pantalla (entiendo
que es el proceso que se ejecuta rapidamente)
investigué, y coloque al principio de la macro:
Application.ScreenUpdating = False para que no ocurriera esto, pero es
pecata minuta, el codigo que me proporcionaste funciona de maravilla.

> Saludos y gracias por aqui nos estaremos viendo, ya que tengo unos pequeños proyectos en la chamba que quiero automatizarlos con macros y funciones de excel.

> Sergio Davalos.


P.D. Una ultima cosa, me faltó comentar que ocupo dentro de la macro,
al final, el codigo para ordenar la hoja BaseDatos de A2:Q700 por
ejemplo, en este orden: primero por la columna A (donde viene el No.
progresivo 1, 2, etc..) y despues por la columna C (donde viene el
nombre de la persona, que puede aparecer varias veces en la columna),
si es necesario abrir otro tema me dices por favor y gracias de nuevo.
Respuesta Responder a este mensaje
#5 Cacho R
25/07/2011 - 06:05 | Informe spam
Lo más sencillo es:
a) Enciendes la grabadora de macros;
b) Seleccionas el rango en cuestión y ordenas;
c) Apagas la grabadora;
d) Analizas y depuras el rango -así- obtenido.

Cualquier detalle que te estuviese faltando, pues abres otro tema y lo
planteas.
Saluos, Cacho R

On 25 jul, 00:11, Sergio wrote:
Gracias por darle seguimiento a mi consulta Cacho R

Apliqué el codigo que me propusiste y quedó perfecto, cumple con mis
requerimientos
solo un detalle... al correr la macro parpadea la pantalla (entiendo
que es el proceso que se ejecuta rapidamente)
investigué, y coloque al principio de la macro:

Application.ScreenUpdating = False para que no ocurriera esto, pero es
pecata minuta, el codigo que me proporcionaste funciona de maravilla.

> > Saludos y gracias por aqui nos estaremos viendo, ya que tengo unos pequeños proyectos en la chamba que quiero automatizarlos con macros y funciones de excel.

> > Sergio Davalos.

P.D. Una ultima cosa, me faltó comentar que ocupo dentro de la macro,
al final, el codigo para ordenar la hoja BaseDatos de A2:Q700 por
ejemplo, en este orden: primero por la columna A (donde viene el No.
progresivo 1, 2, etc..) y despues por la columna C (donde viene el
nombre de la persona, que puede aparecer varias veces en la columna),
si es necesario abrir otro tema me dices por favor y gracias de nuevo.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida