Trabajar con una ventana duplicada en excel

Tengo una macro mediante la cual me duplica la ventana activa de excel para mostrarla en un segundo monitor:

Sub bot_extenderpantalla_Click()
'creamos una nueva ventana de excel con la hoja activa (visor)
Sheets("visor").Activate
ActiveWindow.NewWindow
Windows(2).Activate
With Windows(2)
    .DisplayWorkbookTabs = False
    .DisplayHeadings = False
    .DisplayZeros = False
    .DisplayFormulas = False
    .DisplayHorizontalScrollBar = False
    .DisplayVerticalScrollBar = False
End With
End Sub

Por otro lado tengo otra macro en un módulo con la que intento que en esa ventana duplicada se cree un "auto scroll" cada X segundos, de la siguiente manera:

Sub scroll_visor()
Dim pantallaext As String
    Dim tiempo
    Windows(2).Activate
    pantallaext = Windows(2).Caption
    Windows(pantallaext).Activate
    Sheets("visor").Range("B11").Select
    Windows(pantallaext).FreezePanes = True
    Windows(pantallaext).Application.DisplayFullScreen = True
    tiempo = Now + TimeValue("00:00:10")
    Application.OnTime EarliestTime:=tiempo, Procedure:="scroll_visor", Schedule:=True
    Dim minuto, valorscroll As Long
    minuto = Minute(Time)
    'XXXXXXXXXXXXXXXXXXXXXXXX SCROLL SÓLO EN LA PANTALLA SECUNDARIA
    valorscroll = 45
    If Sheets("visor").Range("B" & valorscroll + 11).Value > valorscroll Then
        If minuto Mod 2 = 0 Then
            ActiveWindow.ScrollRow = Cells(valorscroll + 11, "B").Row
            Else
            ActiveWindow.ScrollRow = Cells(11, "B").Row
        End If
    End If
End Sub

El problema radica en que  el procedimiento "scroll_visor" creado con application.ontime NO se ejecuta SIEMPRE en la ventana duplicada, sino en la ventana que en ese momento esté activa.

¿Cómo puedo hacer para que se ejecute siempre solamente en la ventana duplicada?

Respuesta
1

Le hice unos cambios en tus macros y en principio resuelve tu problema, se ejecuta el scroll solo en la nueva ventana. Dejo comentarios allí.

Parece que nuevamente no se puede dejar códigos aquí... lo intentaré más tarde. Sino enviame un correo para que te envíe el libro .

Sdos!

Elsa

http://aplicaexcel.com

https://www.youtube.com/c/ElsaMatilde 

Primera macro y declaración de variables:

Dim pantallaInicio As String, pantallaExt As String
Sub bot_extenderpantalla_Click()
'creamos una nueva ventana de excel con la hoja activa (visor)
Sheets("visor").Activate
ActiveWindow.NewWindow
pantallaExt = ActiveWindow.Caption     'nombre de la nueva ventana
With Windows(pantallaExt)              'está activa la nueva pantalla, se configura esta hoja
    .DisplayWorkbookTabs = False
    .DisplayHeadings = False
    .DisplayZeros = False
    .DisplayFormulas = False
    .DisplayHorizontalScrollBar = False
    .DisplayVerticalScrollBar = False
End With
'se quedó en la nueva ventana. Se vuelve a la 1ra manualmente.
End Sub

Segunda macro:

Sub scroll_visor()
    Dim tiempo
    'se guarda el nombre de la primera ventana, puede ser la misma hoja u otra
    pantallaInicio = ActiveWindow.Caption
    Windows(pantallaExt).Activate  'se pasa a la pantalla2 y se configura
    With Windows(pantallaExt)
        Sheets("visor").Range("B11").Select
        .FreezePanes = True
        .Application.DisplayFullScreen = True
        tiempo = Now + TimeValue("00:00:10")
        Application.OnTime EarliestTime:=tiempo, Procedure:="scroll_visor", Schedule:=True
        Dim minuto, valorscroll As Long
        minuto = Minute(Time)
        'XXXXXXXXXXXXXXXXXXXXXXXX SCROLL SÓLO EN LA PANTALLA SECUNDARIA
        valorscroll = 45
        If Sheets("visor").Range("B" & valorscroll + 11).Value > valorscroll Then
            If minuto Mod 2 = 0 Then
                .ScrollRow = Cells(valorscroll + 11, "B").Row
            Else
                .ScrollRow = Cells(11, "B").Row
            End If
        End If
    End With
    'debiera volver a la pantalla de inicio ???
    Windows(pantallaInicio).Activate
End Sub

Sdos!

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas