MACROS Copiar Datos separados y Limpiar formulario

Hola Amigos:
Antes de todo agradezco su tiempo a solución de nuestras inquietudes y aprendizaje. Mi caso es el siguiente: Tengo 1 hoja que contiene fórmulas llamada "CAJA" y otra "DIARIO" los datos de CAJA los envío a DIARIO para guardar las ventas acumuladas del día con el siguiente código que obtuve por esta página y de fue de gran ayuda:
Sub pase()
libre = Sheets("DIARIO").Range("A65536").End(xlUp).Row + 1
finfila = ActiveSheet.Range("A65536").End(xlUp).Row
ActiveSheet.Range("B6:F34").Copy
Sheets("DIARIO").Range("A" & libre).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
ActiveSheet.Range("B6:F3").Value = ""
End Sub
Mi problema es que necesito seleccionar otras 2 celdas que están separadas en CAJA y me las pegue de igual en DIARIO, también otro problema al correr la macros me limpia los datos de CAJA pero también las fórmulas que están dentro de ellas y necesito que ellas continúen para seguir la función de CAJA.
Gracias por anticipado: ALLGO

1 respuesta

Respuesta
1
Vamos a ir por partes. El que de tu hoja DIARIO se borren tanto los valores como las fórmulas lo ocasiones tu mismo con el código:
ActiveSheet.Range("B6:F3").Value = ""
Con esto estás borrando todo el contenido de las celdas selecciondas; incluidas las que contienen fórmulas.
Solución más limpia; si el rango que contiene las fórmulas es siempre el mismo; excluirlo de esa selección previa al borrado.
La otra cuestión sobre las celdas más separadas del resto de datos que no está copiando; ¿La separación con respecto al resto de datos es siempre del mismo nº de celdas? Si es así tan sólo hay que ampliar el rango de selección a ese nº de celdas.
Con los detalles construimos la nueva macro.
Gracias por tu pronta respuesta!
Con respecto a las celdas adicionales el rango que tengo definido es:
ActiveSheet.Range("B6:F34").Copy
(Pero de igual manera necesito copiar C3 y F3),
He estado tratando de probar de diferentes maneras pero sin éxito
Ahora comprendo que al ejecutar:
ActiveSheet.Range("B6:F3").Value = ""
Me limpia las fórmulas que tengo en CAJA (lo elimine y ahora no me borra los datos) pero es necesario limpiarlos para seguir con las ventas, necesito tu ayuda en asignar un código para que limpie los datos pero no las fórmulas siempre sin excluir el copiado que le antecede.
Gracias nuevamente,
Esta todo un poco lioso. Vamos a aclarar el tema.
De la Hoja CAJA el rango B6:F34 y las celdas C3 y F3 las quieres copiar a la hoja DIARIO. ¿Dónde quieres copiar el rango B6:F34? ¿A la primera columna de la primera fila que este vacía? ¿Y las celdas C3 y F3? ¿La copia ha de ser de los valores sin las fórmulas en ambos casos y mantener las fórmulas de la hoja CAJA?
Gracias por el interés y tu valiosa ayuda experto. Pero ya resolví el inconveniente de las celdas separadas.
Ahora con el inconveneinte de limipiar el rango, Perdona pero creo que no me he explicado bien lo de la macros en CAJA: allí tengo casillas con fórmulas y a la hora de ingresar un dato me va llenando otras casillas automáticamente, las cuales debo de pasarlas a DIARIO (con la macros abajo) y no hay inconveniente con la macros que ya tengo ya que me pasa solo los datos de CAJA a DIARIO, no las fórmulas:
Sub pase()
libre = Sheets("DIARIO").Range("A65536").End(xlUp).Row + 1
finfila = ActiveSheet.Range("A65536").End(xlUp).Row
ActiveSheet.Range("B6:F34").Copy
Sheets("DIARIO").Range("A" & libre).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub
Anteriormente tenia el codigo: ActiveSheet.Range("B6:F34").Value = "", antes del End Sub, pero me borraba las formulas y me guiaste amablemente a eliminarla.
Lo que necesito es un código que supla al que tenia anteriormente y que limpie el rango "B6:F34" de CAJA (que es lo que copia) pero que al limpiar los datos no me borre las fórmulas ya que necesito seguir con nuevos ingresos de datos.
Gracias!
Si tiene fórmulas el problema lo está ocasionando el origen de las mismas. Es decir, si la celda A1 tiene la fórmula =B1+C1 para que se limpie la celda lo que tienes que hacer es borrar el origen, es decir, B1 y C1; no se si me explico.
Bien, ahora entiendo experto.
Tu crees que exista alguna otra solución, ¿ya qué trabajo con solo fórmulas y los resultados son datos de otras hojas al ingresar un código opera según información de otras y al dar nuevo movimiento en CAJA las paso a DIARIO?.
Gracias
Si una celda es fruto de una fórmula por mucho que hagamos en la hoja si no eliminamos el origen el calculo va a ser el mismo y va a mostrar ese resultado; no hay manera de que no aplique la fórmula.
Gracias experto encontré la solución y la tenia enfrente, simplemente puse el código de limpieza con el rango de las celdas donde hacia el ingreso... así de simple. Nuevamente Gracias experto, de seguro me seguirás viendo por acá con este proyecto que estoy elaborando
Doy por concluida la pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas