Visual Basic - Bloquear, sólo en una hoja, la herramienta zoom en excel 2010

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 65 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Bloquear, sólo en una hoja, la herramienta zoom en excel 2010

Publicado por Luis (1 intervención) el 21/11/2016 01:12:31
Tengo un archivo en Excel 2010, con una macro y funciones.- En este archivo tengo 2 hojas. En una de estas hojas tengo una consulta a una base de datos, que es de donde extraigo la información buscada. En la otra hoja tengo una presentación similar a un formulario (no es un objeto formulario, es una planilla con aspecto a un formulario), en donde en cada celda tengo implementada una función de consulta (CONSULTAV) la cual me trae el correspondiente dato del campo (columna) de la hoja en la que está dicha consulta. Sumado a esto, en dicha hoja en el que está el formulario, tengo un objeto o control Activex que me trae una imagen asociada al registro seleccionado. Dicho control tiene implementado unas líneas de código para mostrar en la misma hoja, la imagen en cuestión. En una de esas celdas del formulario hice una validación de datos que me sirve para seleccionar un dato (número id) que es el registro que mostrará la información requerida, juntamente con la imagen asociada. Todo funciona a la perfección, excepto a la hora de hacer zoom en la hoja del formulario. Si yo aumento o disminuyo el zoom (trabajo con el zoom al 100%) se descompagina el objeto ActiveX. Se corre de lugar, me tapa las otras celdas en la que se muestra información. Esto presumo que es un problema de compatibilidad de este control activex con el propio excel.
Mi pregunta es: Habrá alguna/s líneas de código en VBA que se puedan implementar para que se pueda bloquear el Zoom al 100 %, pero solamente en la Hoja en la que tengo el formulario, no así, en la restante hoja del libro, en la cual pueda usar el Zoom a mi antojo. He visto un ejemplo que le muestro a continuación, pero no me funcionó:

:::::::::
1° 'asegurate' de que el zoom 'actual' [de 'esa' hoja] es el 'adecuado'
:::::::::
2° copia las siguientes lineas en el modulo de codigo de 'la hoja'...
1
2
3
4
5
6
Private Sub Worksheet_Activate()
  Zoom_OnOff False
End Sub
Private Sub Worksheet_Deactivate()
  Zoom_OnOff True
End Sub
::::::::::::
3° copia las siguientes lineas en un modulo de codigo 'normal'...
1
2
3
4
5
6
7
8
9
10
Option Private Module
Sub Zoom_OnOff(ByVal OnOff As Boolean)
  Dim ComandoZom As CommandBarControl
  For Each ComandoZoom In CommandBars.FindControls(ID:=925)
    ComandoZoom.Enabled = OnOff
  Next
  For Each ComandoZoom In CommandBars.FindControls(ID:=1733)
    ComandoZoom.Enabled = OnOff
  Next
End Sub
::::::::::::
4° [finalmente] 'repite' la instruccion de 'la hoja' ['Workshet_Deactivate']
en el evento '_BeforeClose' del libro [ThisWorkbook]
=>de otra manera, PERMANECERAN 'des-habilitdos' para la siguiente sesion<=
[si la 'ultima hoja activa' es la que los 'des-habilita'] =>es solo 'para estar seguros'<= ;)
1
2
3
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Zoom_OnOff True
End Sub
::::::::::


Espero vuestra ayuda, desde ya muchas gracias...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder