Gráfica que ocupe toda la ventana

Caliche

Active Member
Joined
Mar 26, 2002
Messages
339
Cuando en una macro se usa :

Application.Goto Reference:="xxxx", scroll:=True

"xxxx" se convierte en la celda activa y aparece en la parte superior izquierda de la pantalla como primera celda.

Dentro de una macro necesito seleccionar una gráfica embebida (embeeded) en una hoja y hacer que esta gráfica ocupe toda la pantalla, o sea, que su borde superior izquierdo coincida con el misbo borde de la pantalla: cuales serían las instrucciones necesarias para hacer esto?.

Estuve haciendo algunas busquedas en este foro, y encontré una propuesta para hacerlo usando la Vista Previa, pero ésto, además de que no logra el efecto que quiero (que el usuario vea solamente la gráfica), me trae los botones de la vista previa (Zoom, Imprimir, etc.)

Adicionalmente, quisiera tener algunas opciones de navegación dentro de la misma gráfica, pór ejemplo, para ir a otra hoja ó a otra gráfica: cual es la mejor herramienta para hacer esto: botones individuales ? una lista desplegable (cuadro de lista de la barra de Formularios? otra opción diferente?.

Muchas gracias por su ayuda
 

Excel Facts

Can you AutoAverage in Excel?
There is a drop-down next to the AutoSum symbol. Open the drop-down to choose AVERAGE, COUNT, MAX, or MIN
Caliche,

Jugué con esto un poco. La idea abajo debe de dar una solución. Pero para mi, llegó cerca pero no pegó en el blanco. Pero tal vez jugando con el código abajo usted pueda encontrar algo que le sirve.
Code:
Sub ZoomToChartSize()

    Dim co As ChartObject
    Dim sngSizeRatioH As Single, sngSizeRatioW As Single

    Set co = Sheets(1).ChartObjects(1)
    
    With ActiveWindow
        sngSizeRatioW = .Width / co.Width
        sngSizeRatioH = .Height / co.Height
        ' should not need to subtract 20, but coming out too big/close
        .Zoom = CInt(Application.Min(sngSizeRatioW, sngSizeRatioH) * 100) - 20
        Application.Goto co.TopLeftCell, True
'        s = "Window: " & .Width & " × " & .Height & vbCr
    End With
'    s = s & "Chart:  " & co.Width & " × " & co.Height & vbCr & vbCr
'    s = s & "W: " & sngSizeRatioW & vbCr
'    s = s & "H: " & sngSizeRatioH
'    MsgBox s
End Sub
En cuanto a su segunda pregunta, lo que he hecho para eso es un listbox y un botón. Pero para mí el código que se hace esto no es muy estable y tuve que tener mucho cuidado.

...Actualmente, pensandolo bien, el código que es tan malhumorado es él que crea el control listbox y el botón. Ya una vez hechas, funcionan sin problema. Entonces si usted lo hace a mano no creo que tendría problemas...

Saludos,
 
Upvote 0
Actualmente, acabo de darme cuenta que el código arriba tiene una debilidad. Hay limites de Zoom de 10 y 400, entonces, mejor hacer
Code:
Sub ZoomToChartSize()

    Dim co As ChartObject
    Dim sngSizeRatioH As Single, sngSizeRatioW As Single
    Dim intZoom As Integer

    Set co = Sheets(1).ChartObjects(1)
    
    With ActiveWindow
        sngSizeRatioW = .Width / co.Width
        sngSizeRatioH = .Height / co.Height
        intZoom = CInt(Application.Min(sngSizeRatioW, sngSizeRatioH) * 100) - 20
        intZoom = Application.Min(intZoom, 400)
        intZoom = Application.Max(intZoom, 10)
        .Zoom = intZoom
        Application.Goto co.TopLeftCell, True
'        s = "Window: " & .Width & " × " & .Height & vbCr
    End With
'    s = s & "Chart:  " & co.Width & " × " & co.Height & vbCr & vbCr
'    s = s & "W: " & sngSizeRatioW & vbCr
'    s = s & "H: " & sngSizeRatioH
'    MsgBox s
End Sub
 
Upvote 0
Greg:Como usted lo dice, el código me da muchas ideas y cumple con un gran porcentaje de mi necesidad. Tengo varias inquietudes:

- El código cambia el porcentaje de zoom de la hoja en la cual está la gráfica embebida, y efectivamente la coloca en la parte superior de la ventana. Ocurre que a veces uno acomoda el porcentaje de zoom para que la información de algunas celdas ó de algunos botones (de navegación) se visualicen sin dificultad, y cambiando el % de zoom automáticamente , me traería problemas.

La pregunta es entonces: cual sería la variación a la macro para que la ventana activa muestre la gráfica solamente, y ojalá ocupando toda la ventana: pienso que habría entonces que cambiar automáticamente el tamaño de la gráfica, no el % de zoom.

- Una pregunta final: Cual sería la variación de la macro si tuviera varias gráficas embebidas en una misma hoja? Como seleccionar en un momento dado cualquiera de dichas gráficas y correr la macro?.

Greg: muchísimas gracias por tomarse el tiempo para ayudarme a resolver esta situación.

Caliche

P.D. : via pm le haré algunos otros comentarios.
 
Upvote 0

Forum statistics

Threads
1,223,948
Messages
6,175,573
Members
452,652
Latest member
eduedu

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top