¿Macro o fórmula?

Buenos días compañeros!
Tengo una serie de preguntas que haceros acerca de excel-vba, así que empecemos.
Mi hoja tiene la siguiente estructura:
CONSUMIDO HOY:_______  (B18)
                                                                  TOTAL CONSUMIDO:______ (E19)
CONSUMIDO ANTERIOR:______  (B20)
RECIBIDO HOY:_____________ (B23)
                                                                TOTAL RECIBIDO:__________ (E24)
RECIBIDO ANTERIOR:_________ (B25)
STOCK:______(C29) "es la resta de e24 y e19.*en este orden".
y dos botones     NUEVO DÍA     y    BORRAR DÍA
Cuando pulso nuevo día, me crea una hoja nueva con el mismo contenido. Y si le doy a borrar día me borra el día creado, nunca el día uno. Hasta ahí todo bien, pero cuando crea un día nuevo no me respeta la fórmulas que he creado solo me copia el diseño por así decirlo y no las fórmulas. Ademas quiero que cuando cree un día nuevo los totales tanto de consumido como de recibido deben pasar al nuevo día, pero en donde pone consumo anterior y recibido anterior.
y asi sienpre que cree un nuevo dia.
a continuacion os pngo el codigo:
Sub copy_page()
If Sheets.Count = 1000 Then
temp = MsgBox("no dura tanto")
Exit Sub
End If
Sheets(Sheets.Count).Select
sheet_name = ActiveSheet.Name
new_sheet_name = sheet_name + 1
Sheets(sheet_name).Copy After:=Sheets(sheet_name)
copied_sheet_name = sheet_name & " " & "(2)"
Sheets(copied_sheet_name).Select
Sheets(copied_sheet_name).Name = new_sheet_name
Range("B18:B20:B23:B25:E19:E24").ClearContents
Range("B12").Value = new_sheet_name
Range("D12").Value = Date
End Sub
Sub delete_page()
If ActiveSheet.Name = "1" Then
temp = MsgBox("Can't Delete Day 1")
Else
If ActiveSheet.Name <> Sheets(Sheets.Count).Name Then
temp = MsgBox("....")
If temp = vbOK Then
ActiveWindow.SelectedSheets.Delete
End If
Else
ActiveWindow.SelectedSheets.Delete
End If
End If
End Sub
No se como se le dice que copie y mantenga las fórmulas. Y que me cruce los datos como explique más arriba.
Muchas gracias a todos. Y toda ayuda será bienvenida.

1 respuesta

Respuesta
1
Tienes que añadir que en las celdas que tenga que ir alguna fórmula lo siguiente
Range(elquesea).formulaR1C1 = "laformula"
Ten en cuenta que las fórmulas las tienes que poner como si fueran desde visual, es decir, para un buscarv tendrías que poner un lookup y hacer las referencias en vez de por rangos por fila y columna RC si es en la misma fila y en la misma columna RC si es en la columna de la izquierda RC[-1] si es en la columna de la derecha y dos filas más abajo R[2]C[-1]
Cualquier otra duda pregunta.
Hola de nuevo. Eso de la fórmula no lo termino de ver claro ya que es la primera vez que me pongo al tema. Ese código lo he cogido de otro sitio y estoy intentando adaptarlo.
¿Mi pregunta es cuando hace la copia no hay ningún parámetro que le diga que tiene que copiar la fórmulas y conservar la hoja como la he creado?.
En caso negativo, ¿lo qué me has explicado de range... como se especifica si es una resta o suma? Bueno esto lo voy a mirar en la ayudo. Lo de buscar lookup no lo entiendo.
Bueno hacemos una cosa miro enla ayuda para no volverte loco y te voy contando.
Muchas gracias por la ayuda, ya te comento si encuentro algo
Buenas otra vez. Yo escribo range("e24"). formular1c1="=sum (rc)". Yo con esta instrucción intento decirle que en la celda e24 hay una suma. ¿Estoy en lo cierto? Y según tu explicación si no entendí mal, para decirle que es la misma celda (pero en la nueva hoja) se pone RC solamente. ¿Ok?
No se si es correcta, ya me dirás cuando puedas. Y si lo es en que parte del código debe ir.
¿Y ya que estamos como le ordeno que me cruce la información de una celda a otra como explique anteriormente?
Gracias de antemano y seguiremos intentando que funcione. Gracias
A ver, ya que veo que el código ese no lo hiciste especialmente para este caso te voy a pasar yo un código concreto para este caso.
Para ello lo que necesito es que me digas bien como tienes la hoja para saber como lo necesitas.
Es decir, tu tienes una hoja en la que tienes esos datos, ¿o tienes esos datos y más cosas?
¿Las cantidades que ahí hay que indicar los introduces tu manualmente o se sacan de otro lado o bien se calculan con alguna fórmula que hay en las celdas?
Si pudieras enviarme el libro por correo yo te lo reenviaría con la macro ya puesta, en caso de que no puedas enviarlo por confidencialidad pues detállame todo lo que puedas como esta la hoja y como quieres que quede la otra hoja.
Por lo que entiendo para cada día del mes hay una hoja, con lo cual al final de un mes vas a tener un libro con N hojas, donde N es el número de días que se hagan (descontando findes y festivos o días que por POR motivo no se haga, que a mi no me importan).
Porque otra cosa que se puede hacer para el copiado si se copia la hoja ENTERA es lo siguiente:
Sheets("Nombrehoja").Copy After:=Sheets(1)
Con eso hace una copia exacta de la hoja...
Bueno, espero tu respuesta y en caso de que me puedas enviar el archivo para hacer la macro más cómodamente te adjunto un correo al que me lo puedes enviar: franciscoriveiro@ iceacsa. Es
Muy bien ahora mismo te mando el libro. Te haré algunas aclaraciones para que sepas de que va la historia. Lo que intento hacer es un parte de consumo, en este caso consumo de negativo. Los datos se introducirán manualmente. Cada día que se genere coresponderá a un día de rodaje, por lo que solo habrá una hoja por día. Esta parte esta solucinada.
! No me permite enviarte el mail, dice que tu dirección no es valida!
Cuando solucionemos esto te sigo contando sino sera dificl si el libro por delante.
Obviamente tienes que jugar el franciscoriveiro con la @ y el iceacsa. Es si dejas el espacio en blanco no dejará enviarlo.
En el correo mandame ya explicado todo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas