Una macro no se ejecuta desde otra macro, pero sí si la ejecuto manualmente, ¿Por qué?
En una hoja tengo un botón que ejecuta el siguiente código:
Sub preguntar_scroll() Dim respuesta respuesta = MsgBox("¿Quieres extender la pantalla actual?", vbYesNo + vbQuestion, "Extender pantalla") If respuesta = vbYes Then Sheets("visor").Activate ActiveWindow.NewWindow Sheets("datos").[J7].Value = ActiveWindow.hWnd Sheets("datos").[I7].Value = "on" Call visor Else Sheets("datos").[I7].Value = "off" End If End Sub
Básicamente me crea una ventana duplicada, la cual mostraré en un segundo monitor...
Al crearse la nueva ventana llamo a la macro "visor", que lo que hace, o debería, es darle formato a la nueva ventana (maximizarla, inmovilizar paneles, ocultar encabezados de filas y columnas, etc.), es la siguiente:
Sub scroll_visor() 'On Error GoTo error Dim valorscroll As Long valorscroll = Sheets("datos").[I8].Value If ActiveWindow.hWnd <> Sheets("datos").[J7].Value Then Windows(2).Activate End If 'damos formato a la nueva ventana With ActiveWindow .Application.DisplayFullScreen = True .Application.Sheets("visor").[B11].Select .FreezePanes = True .DisplayFormulas = False .DisplayHeadings = False .DisplayWorkbookTabs = False .DisplayZeros = False .DisplayHorizontalScrollBar = False .DisplayVerticalScrollBar = False End With End Sub
El problema radica en que cuando ejecuto el primer código, se ejecuta normalmente, y salta al segundo (lo he comprobado poniendo un msgbox), pero no realiza lo que este código ordena. Sin embargo si ejecuto el segundo código a mano desde vba, sí se ejecuta correctamente.
¿Alguien me podría indicar qué está pasando?
1 Respuesta
Respuesta de Elsa Matilde
2