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
-> 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í?...
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.
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.
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.
Cualquier detalle que te estuviese faltando, pues abres otro tema y lo
planteas.
Saluos, Cacho R