Volver a la hoja anterior.

14/10/2006 - 22:37 por ~ jose ~ | Informe spam
Hola,
Necesito un código para que al finalizar mi macro vuelva a la hoja
anterior que se ha seleccionado.

El motivo es que en una hoja tengo:

Private Sub Worksheet_Deactivate()
Application.ScreenUpdating = False
Application.EnableEvents = False
If Range("V1") = -3 Then Range("V1") = -2: Call
Actualizar_almacen.Actualizar_almacen
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

Pero al seleccionar otra hoja (para asi activar el evento 'Deactivate')
el código me devuelve a la hoja donde está el evento, y por eso habia
pensado en poner un código que me situe en la hoja que he pinchado
para salir.

Por si os sirve de algo (que supongo que si), la macro
'Actualizar_almacen' es esta:

Sub Actualizar_almacen()

If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData

Range("P2:R65536").Select
Selection.Copy
Range("M2:O65536").Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

Range("A1").Select
Columns("D:D").AdvancedFilter Action:=xlFilterInPlace,
CriteriaRange:= _
Columns("D:D"), Unique:=True

Range("M2").Select

End Sub

Gracias, un saludo,
jose

PD: por cierto el filtro cuesta mucho en terminarse, me refiero a mas o
menos 55 segundos y tengo 3680 filas y filtradas son 429 pero al
filtrar me dice: 'Se encontraron 429 de 65535 registros', esto es
porque me ha filtrado todas las filas en blanco que hay a partir de la
fila 3680?
 

Leer las respuestas

#1 Héctor Miguel
15/10/2006 - 00:17 | Informe spam
hola, jose !

1) el tiempo que 'se toma' la macro para terminar el proceso, 'obedece' a que [virtual o efectivamente]...
-> estas SELECCIONANDO/copiando/pegando/re-seleccionando/... las ~65k celdas/filas :-((

2) [creo que] podrias mejorar tiempos [y 'corregir' el regreso a dicha hoja] con algo +/- como lo siguiente:
[suponiendo que 'la hoja' [con el evento] se llama 'hoja1' y que 'la macro' esta en un modulo general -?-...
Y... que la ultima fila con datos COINCIDE con la ultima fila 'ocupada' de la columna 'P' -??? <= OJO

en el modulo de codigo de 'esa' hoja ==Private Sub Worksheet_Deactivate()
If [v1] = -3 Then [v1] = -2: Actualizar_almacen
End Sub

en un modulo de codigo 'general' ==Sub Actualizar_almacen()
With Worksheets("hoja1") ' modifica el nombre de ser necesario :D '
.Range(.Range("p2"), .Range("p" & Rows.Count).End(xlUp)).Resize(, 3).AdvancedFilter _
Action:=xlFilterCopy, CopyToRange:=.Range("m2:o2"), Unique:=True
' quita la siguiente marca de comentario si quieres el extracto ordenado :) '
' .Range("m2").Sort _
Key1:=.Range("m2"), Order1:=xlAscending, _
Key2:=.Range("n2"), Order2:=xlAscending, _
Key3:=.Range("o2"), Order3:=xlAscending, Header:=xlGuess
End With
End Sub

si cualquier duda [o infomacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
... que al finalizar mi macro vuelva a la hoja anterior que se ha seleccionado.
... en una hoja tengo:

Private Sub Worksheet_Deactivate()
Application.ScreenUpdating = False
Application.EnableEvents = False
If Range("V1") = -3 Then Range("V1") = -2: Call Actualizar_almacen.Actualizar_almacen
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

Pero al seleccionar otra hoja (para asi activar el evento 'Deactivate') el codigo me devuelve a la hoja donde esta el evento
y por eso habia pensado en poner un código que me situe en la hoja que he pinchado para salir.
Por si os sirve de algo (que supongo que si), la macro 'Actualizar_almacen' es esta:

Sub Actualizar_almacen()
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Range("P2:R65536").Select
Selection.Copy
Range("M2:O65536").Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Range("A1").Select
Columns("D:D").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Columns("D:D"), Unique:=True
Range("M2").Select
End Sub

... PD: por cierto el filtro cuesta mucho en terminarse, me refiero a mas o menos 55 segundos y tengo 3680 filas
y filtradas son 429 pero al filtrar me dice: 'Se encontraron 429 de 65535 registros'
esto es porque me ha filtrado todas las filas en blanco que hay a partir de la fila 3680?

Preguntas similares