Ayuda macro

Hola expertos
Me gustaría hacer una macro que haga lo siguiente
Tengo datos en una hoja, entonces que las celdas que yo escoja que siempre van a ser las mismas, los valores se pasen a otra hoja que también siempre va a ser la misma, algo así como llenar un formulario con los datos de otra hoja. Y que cuando termine se borren los valores y quede el formulario vacío.

1 Respuesta

Respuesta
1
En este enlace respondí una consulta similar a esta, donde el formulario se pasa a una hoja base :
http://www.todoexpertos.com/mitodoexpertos/expert/questions/view/1806360/asesoria
Luego faltaría limpiar el form. En el siguiente ejemplo se seleccionan todas las celdas a limpiar:
Sub limpieza()
Sheets("formulario").select
Activesheet.range("A5, B3, C1:C10; G6").value = ""
End Sub
Si te presenta alguna dificultad adaptar la rutina a tu libro, deberás indicarme con referencias de dónde a dónde se deben copiar los datos para armar una rutina personal.
http://es.geocities.com/lacibelesdepunilla/manual_VBA
Reina que pena contigo pero el link al que me enviaste me dice "No tienes permiso para acceder a un mensaje privado del que no eres experto o usuario."
Y como soy nuevo no se que hacer.
Gracias
Qué raro, la consulta no aparece como privada... bueno, te transcribo lo que aparece allí, que es 1 rutina para pasar de un formato a una base de datos.
Hola:
Esto podes lograrlo con una rutina que podrá ser ejecutada colocando en la hoja del formato un botón o si el formato se imprime, al momento de imprimir.
Para hacer una rutina de copiado se necesitan las referencias (de qué hoja y celda a qué hoja y celda se copian). Seguramente tendrás celdas discontinuas para copiar. Por lo que te dejo una de ejemplo para que armes tu propia rutina. Luego si te quedan algunos puntos sin resolver me escribís nuevamente.
Sub copiaFormato()
'obtener la primer fila libre de la hoja BASE
miFila = sheets("BASE").range("A65536").End(xlup).Row + 1
sheets("Formato").select
'comienza el copiado de cada celda a la fila libre de hoja BASE
'cada celda se copia en una col a partir de 1, en la fila indicada por la variable miFila
activesheet.range("A6").copy destination:=Sheets("BASE").cells(miFila,1)
activesheet.range("B5").copy destination:=Sheets("BASE").cells(miFila,2)
'así con cada celda
End Sub
Si utilizarás un botón colocá la rutina en un módulo. Si la ejecutarás al momento de imprimir, colocala en el Editor, objeto ThisWorkbook, en evento BeforePrint:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
'aquí las instrucciones
End Sub
Corazón que pena molestarte tanto, pero ahora me gustaría, lo siguiente.
Poder escoger la celda donde pegar
Por ejemplo
Quiero que una se pegue en la B6 otra en la B7 otra en la F4 otra en la E5.
Ah y otra cosita como la hoja donde se van a pegar siempre va a ser la misma no hay problema en eso, pero como no siempre va a ser la misma hoja de donde se copia me gustaría me colaboraras con eso también.
La idea es poner un botón en cada hoja y al momento de dar click me lleve a la hoja donde se copiaron, con los datos de la hoja donde estaba.
Te agradezco.
Si no estás en condiciones de adaptar los ejemplos dados a tu libro, deberás indicarme con más precisión tus referencias.
Necesito saber qué celdas se estarán copiando a B6, B7, F4 y E5, y si estas serán siempre las mismas en las distintas hojas o no.
Bueno reina las celdas que se van a copiar son las siguientes B6 que se pega en la otra hoja en la B11, la B7 en la B12, la B13 en la E11 y la H27 en la B16 y siempre se van a pegar en la misma hoja, lo único es que esos datos no siempre van a ser de la misma hoja, esos datos saldrían de la hoja que tengo activa.
Gracias por tu colaboración y disculpa molestarte tanto.
Bien, entonces te convendrá utilizar un atajo de teclado, para no tener un botón en cada hoja si la rutina será la misma. Pero queda a tu criterio.
La rutina va en un módulo del Editor (alt+F11 para ingresar, insertar módulo y allí la copiás)
Ajustá el nombre de la hoja destino, que en el ejemplo la dejé como FORMATO.
Espero que esto sea lo que necesitás.
Sub MacroCopia()
ActiveSheet.Range("B6:B7").Copy Destination:=Sheets("FORMATO").Range("B11")
ActiveSheet.Range("B13").Copy Destination:=Sheets("FORMATO").Range("E11")
ActiveSheet.Range("H27").Copy Destination:=Sheets("FORMATO").Range("B16")
Application.CutCopyMode = False

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas