Mcro para copiar filtrado en hojas separadas

Vi en el foro un macro para copiar un rango filtrado en otra oja esta incompleto me podrán ayudar: saludos

Sub ejemplo()'por luismondeloSheets("datos").Selectnombre = InputBox("Qué nombre desea poner a la nueva hoja con los datos filtrados???")If nombre = "" Then Exit SubSheets.Add after:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)ActiveSheet.Name = nombreSheets("datos").SelectRange("a1").CurrentRegion.CopySheets(nombre).Range("a1").PasteSpecial Paste:=xlValuesMsgBox "DATOS COPIADOS A LA HOJA: " & nombreActiveSheet.ShowAllData

1 respuesta

Respuesta
1

Le falta la última línea "End Sub", ya se la agregué:

Sub ejemplo()
'por luismondelo
    Sheets("datos").Select
    nombre = InputBox("Qué nombre desea poner a la nueva hoja con los datos filtrados???")
    If nombre = "" Then Exit Sub
    Sheets.Add after:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
    ActiveSheet.Name = nombre
    Sheets("datos").Select
    Range("a1").CurrentRegion.Copy
    Sheets(nombre).Range("a1").PasteSpecial Paste:=xlValues
    MsgBox "DATOS COPIADOS A LA HOJA: " & nombre
    ActiveSheet.ShowAllData
End Sub

Revisa si es lo que necesitas. Avísame si le falta algo más a la macro.

Saludos. Dante Amor

Recuerda valorar la respuesta.

Mil gracias tengo 3 preguntas más.

1 Hay forma de que el nombre lo pueda tomar de la celada te explico como esta.

Tengo un archivo con 100 tiendas las filtro por tienda 1 tienda 2 tienda 3 cada tienda viene en diferentes celdas la intención es poder copiar lo más fácil la información de la celdas.

2 Si o se puede estoy tratando de temporizar el macro con el siguiente código.

Dim tiempo As Date

Dim contador As Integer

Sub IniciaOnTime()

'controla la repetición y la cadencia

Dim allea As Integer

'repetición cada 2 segundos

tiempo = Now + TimeSerial(0, 0, 60)

'llama a esta misma macro en el tiempo estipulado

Application.OnTime tiempo, "IniciaOnTime"

'controlamos el final de la repetición

contador = contador + 1

'mientras el contador sea menor a 6 ejecutamos la rutina principal

'cuando lleguemos a 6 interrumpimos la repetición

If contador < 6 Then

    Run "MacroPrincipal"

Else

    Run "CancelaOnTime"

End If

End Sub

Sub CancelaOnTime()

'ejecuta el final de la repetición y reinicia el contador

    Application.OnTime tiempo, "IniciaOnTime", , False

    contador = 0

End Sub

Sub MacroPrincipal()

Sheets("datos").Select

nombre = InputBox("Qué nombre desea poner a la nueva hoja con los datos filtrados???")

If nombre = "" Then Exit Sub

Sheets.Add after:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)

ActiveSheet.Name = nombre

Sheets("datos").Select

Range("a1").CurrentRegion.Copy

Sheets(nombre).Range("a1").PasteSpecial Paste:=xlValues

Cells.EntireColumn.AutoFit

MsgBox "DATOS COPIADOS A LA HOJA: " & nombre

 ActiveSheet.ShowAllData

End Sub

Pero me da error en el active shet

3 Quiero mantener el formato original estoy ocupando

Cells.EntireColumn.AutoFit

Pero no me funciona en el temporizador.

Con gusto te ayudo con todas tus preguntas.

Valora esta respuesta.

Crea una pregunta nueva para cada una de tus peticiones.

Hola mil gracias.

Necesito simplificar la tarea de arriba tengo 2 opciones la primera seria en lugar del text box para poner el nombre de una celda pero este cambia ejemplo.

Fila concepto descripción tienda

1.     Ventas.    Xxxxxxxx.Veracruz

3.    Productos

150 promociones

5.   Productos xcxxx coapa

159 promociones 

Y hasi son 100 tiendas

O temporizador para no estar ejecutando el macro solo filtro y género tienda

Necesito mantener el formato original

Slds

Podrías valorar esta respuesta y crea nuevas preguntas en el tema de microsoft excel.

Puedes entrar a crear un nueva pregunta en este enlace:

http://www.todoexpertos.com/preguntar?topicId=269 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas