visual script programming macro for enable easy code excel excel-vba excel-2007 excel-2003 excel-2010 vba

script - Excel: los increíbles controles de encogimiento y expansión



vba code for excel (30)

¿Podría ser que el botón esté definido para pegarse a las esquinas de una celda, en lugar de flotar libremente?

Compruébalo con

Formato | Propiedades | Posicionamiento de objetos

y elige cualquier cosa que no sea "mover y clasificar con celdas"

Ocasionalmente, pasaré por una hoja de cálculo que adolece de botones mágicos o listboxes que aumentan o disminuyen con el tiempo.

Nada en el código está instruyendo esto.

¿Alguien más ha experimentado esta alegría?


A veces tengo el mismo problema. En mi caso, podría replicarlo al 100% en un archivo pero no era consistente en un archivo virtualmente idéntico. También encontré que el error de tamaño no era permanente: podía guardar y volver a abrir el archivo para restaurar la apariencia del botón. También podría crear una nueva ventana y luego descartar la ventana dañada. Utilizo una configuración de monitor único.

Para mí, el botón cambió de tamaño cuando accedí a la colección HPageBreaks de la hoja. Pude evitar el problema cambiando temporalmente la vista de ventana de la siguiente manera:

ActiveWindow.View = xlPageBreakPreview '' do pagination stuff using HPageBreaks ActiveWindow.View = xlNormalView


Acabamos de resolver esto a nivel de empresa agregando el siguiente módulo a todos los libros habilitados para macros:

Option Explicit Type ButtonSizeType topPosition As Single leftPosition As Single height As Single width As Single End Type Public myButton As ButtonSizeType Sub GetButtonSize(cb As MSForms.CommandButton) '' Save original button size to solve windows bug that changes the button size to '' adjust to screen resolution, when not in native resolution mode of screen myButton.topPosition = cb.top myButton.leftPosition = cb.Left myButton.height = cb.height myButton.width = cb.width End Sub Sub SetButtonSize(cb As MSForms.CommandButton) '' Restore original button size to solve windows bug that changes the button size to '' adjust to screen resolution, when not in native resolution mode of screen cb.top = myButton.topPosition cb.Left = myButton.leftPosition cb.height = myButton.height cb.width = myButton.width End Sub

Solo llámalos al principio y al final de tu código así:

Private Sub CommandButton1_Click() Application.ScreenUpdating = False '' Turn off ScreenUpdating to make sure the user dosn''t see the buttons flicker GetButtonSize CommandButton1 '' Saves original button size '' Do cool things '' '' '' SetButtonSize CommandButton1 '' Restores original button size Application.ScreenUpdating = True '' Turn ScreenUpdating back on when you''re done End Sub


Agregue este código a un archivo .reg. Haga doble clic y confirme. Reinicie Excel.

Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER/Software/Microsoft/Office/14.0/Excel/options] "LegacyAnchorResize"=dword:00000001 [HKEY_CURRENT_USER/Software/Microsoft/Office/14.0/Common/Draw] "UpdateDeviceInfoForEmf"=dword:00000001


Agrupar los controles parece funcionar para mí. Me gustaría votar o comentar pero SO no me deja. Tenga en cuenta que este problema aparece con frecuencia si utiliza la escala de pantalla W8 y tiene una computadora portátil de alta resolución y un monitor anterior.


Ahora, al usar Excel 2013 y esto sucede CADA vez, extiendo mi pantalla mientras Excel se está ejecutando (y cada vez que elimino la extensión).

La solución que comencé a implementar es usar hipervínculos en lugar de botones y uno para abrir una forma de usuario con todos los demás controles ActiveX activados.


Después de buscar en la red, ve que la mejor solución es guardar el archivo como .xlsb (binario) en lugar de .xlsm


Después de probar muchas de las soluciones en esta y otras publicaciones relacionadas, descubrí que la solución a un problema diferente que Microsoft había publicado también funcionó de manera confiable para este problema en particular cuando se aplica de una manera particular, al menos dentro del contexto en el que estoy trabajando. Experimenté estos problemas en una resolución nativa de las computadoras portátiles que tenemos aquí y en una PC cada vez que cambiaba a una resolución no nativa. A saber, botones cargándose en un tamaño mayor que el normal, haciéndose más grande cuando se hace clic, y el texto y las imágenes en estos botones se reducen (y al menos la configuración para el texto permanece igual, así que no pude ver ninguna forma de cambiarlo programáticamente o de lo contrario.) Estos no han sido problemas intermitentes en mi caso. Sin embargo, he tenido problemas intermitentes después de usar la vista previa de impresión, que Microsoft ha publicado una solución para aquí . Intenté esto y parece estar funcionando.

La solución: para Excel, cierre la aplicación y elimine el archivo MSForms.exd de C:/Users{UserName}/AppData/Local/Temp/Excel8.0 en la resolución en la que desea ver los botones. También puede busque otros archivos .exd en su carpeta AppData / Temp local para otras aplicaciones de Office.

Como mencioné, esta es una solución propuesta por Microsoft para un problema diferente: donde los botones dejan de funcionar después de que se instalan las actualizaciones de diciembre de 2014. Aquí está el enlace a ese artículo. En ese caso, es una solución única. Aquí, puede necesitar hacerlo cada vez que cambie las resoluciones.


Es muy raro. Las propiedades de ancho y alto no se contraen cuando se consultan (ni en el código ni en la hoja de propiedades), pero aparentemente cambian.

Me di cuenta de que si uso la hoja de propiedades y cambio el ancho del estándar 15 a, por ejemplo, 14 y luego ATRÁS a 15, lo corrige.

El siguiente código funciona para mí (y tiene un efecto visual divertido en la hoja: hace clic, se contrae, la pantalla parpadea y se expande).

MI SOLUCIÓN en el código (en el evento de clic para la casilla de verificación):

Dim myCtrl As OLEObject For Each myCtrl In ActiveSheet.OLEObjects myLab = myCtrl.Name myCtrl.Height = 14 '' to "wake up" the property. myCtrl.Height = 15 '' to reset it back to normal myCtrl.Width = 12 '' just making sure Next myCtrl


Es posible que haya encontrado una solución: " asegúrese de que todas las formas de la hoja de cálculo tengan nombres únicos " (incluidas las casillas de verificación / botones de opción (controles OLE), así como las imágenes y otros tipos de formas ...)

Como el problema es intermitente, no puedo garantizarlo. Tengo dos formularios que funcionan bien con esta solución, pero "dos" es un conjunto de muestras muy pequeño, y podría ser solo una coincidencia. Sin embargo, estos son los pasos que tomé:

Enumeré todas las formas en la hoja del problema (wsForm) en una hoja en blanco (Sheet1):

Sub ListShapes() Dim spShape As Shape Dim intRow As Integer Sheet1.Range("A1:F1") = Array("Name", "Left", "Top", "Width", "Height", "Bottom Right Cell") intRow = 2 For Each spShape In wsForm.Shapes Sheet1.Cells(intRow, 1).Value = spShape.Name Sheet1.Cells(intRow, 2).Value = spShape.Left Sheet1.Cells(intRow, 3).Value = spShape.Top Sheet1.Cells(intRow, 4).Value = spShape.Width Sheet1.Cells(intRow, 5).Value = spShape.Height Sheet1.Cells(intRow, 6).Value = spShape.BottomRightCell.Address intRow = intRow + 1 Next End Sub

Luego conté cada nombre de forma en la columna A, usando una fórmula en la columna G:

= COUNTIF ($ A $ 2: $ A $ 120, A2)

Obviamente ajuste el rango para que se adapte ... Puede filtrar todas las formas que no tengan un "1" en esta columna. La "celda inferior derecha" le ayuda a encontrar la forma en su hoja de cálculo: cambie el nombre seleccionando la forma, luego ingrese un nuevo valor único en el cuadro de nombre / referencia en la parte superior izquierda de Excel.

Esta lista de formas también ayudó a encontrar algunas formas "muertas" (0 de altura o 0 de ancho) que fueron olvidadas y olvidadas.

¡Espero que esto funcione para ti! Para el caso ... espero que funcione para MÍ para futuras ocurrencias ...


Este problema es muy frustrante, mi experiencia es que las propiedades generalmente se establecen correctamente en los objetos ActiveX. Modifiqué un UDF desde arriba para poder ejecutarlo en cualquier hoja activa, esto volverá a establecer todo como antes de encoger.

Public Sub ResizeAllOfIt() Dim myCtrl As OLEObject For Each myCtrl In ActiveSheet.OLEObjects Dim originalHeight Dim originalWidth originalWidth = myCtrl.width originalHeight = myCtrl.height myCtrl.height = originalHeight - 1 myCtrl.height = originalHeight myCtrl.width = originalWidth Next myCtrl End Sub


Este problema es, de hecho, debido a la resolución de la pantalla. Lo más común es que ocurra cuando el usuario se conecta a un proyector o WebEx mientras usa la aplicación Excel.

Una solución simple a este problema es pedirle al usuario que reinicie su máquina sin conexiones periféricas (proyector) y luego abra nuevamente la aplicación Excel.


Esto me ha estado atormentando durante años, de forma intermitente. Hay una serie de soluciones, pero parecen ir y venir. Todavía estaba ocurriendo en Excel 2010 (me sucede en mayo de 2014), y todavía se está produciendo en Excel 2013 en algunos informes. La mejor descripción que he encontrado que coincide con mi situación al menos (Excel 2010, sin RDP involucrados, sin vista previa de impresión involucrada) está aquí:

Blog del equipo de soporte de Microsoft Excel: ActiveX y los controles de formulario cambian de tamaño al hacer clic o al hacer una vista previa de impresión (en Excel 2010)

(Esto podría no ser de ayuda para los usuarios de Excel 2013 lo siento)

EDITAR: Añadiendo detalles en caso de que el enlace technet se pierda, el artículo de Technet dice:

PRIMERO instale Microsoft Hotfix 2598144 para Excel 2010 , disponible: here .

En segundo lugar, si su síntoma es "Un botón de ActiveX cambia al tamaño incorrecto después de hacer clic en una hoja de cálculo de Excel 2010", entonces debe:

  • Haga clic en Inicio, haga clic en Ejecutar, escriba regedit en el cuadro Abrir y luego haga clic en Aceptar.
  • Busque y luego seleccione la siguiente subclave de registro HKEY_CURRENT_USER / Software / Microsoft / Office / 14.0 / Excel / Options
  • En el menú Edición, seleccione Nuevo y luego haga clic en el valor DWORD (32 bits).
  • Escriba LegacyAnchorResize y luego presione Entrar.
  • En el panel Detalles, haga clic con el botón derecho en LegacyAnchorResize y luego haga clic en Modificar.
  • En el cuadro Información del valor, escriba 1 y luego haga clic en Aceptar.
  • Salga del Editor del Registro.

O BIEN, si su síntoma es "Un control de formulario de botón se muestra incorrectamente en un libro de trabajo después de ver la vista previa de impresión del libro en Excel 2010", entonces debe:

  • Haga clic en Inicio, haga clic en Ejecutar, escriba regedit en el cuadro Abrir y luego haga clic en Aceptar.
  • Busque y luego seleccione la siguiente subclave del registro: HKEY_CURRENT_USER / Software / Microsoft / Office / 14.0 / Excel / Options
  • En el menú Edición, seleccione Nuevo y luego haga clic en el valor DWORD (32 bits).
  • Escriba MultiSheetPrint y luego presione Entrar.
  • En el panel Detalles, haga clic con el botón derecho en MultiSheetPrint y luego haga clic en Modificar.
  • En el cuadro Información del valor, escriba 1 y luego haga clic en Aceptar.
  • Seleccione la siguiente subclave de registro nuevamente: HKEY_CURRENT_USER / Software / Microsoft / Office / 14.0 / Excel / Options
  • En el menú Edición, seleccione Nuevo y luego haga clic en el valor DWORD (32 bits).
  • Escriba LegacyAnchorResize y luego presione Entrar.
  • En el panel Detalles, haga clic con el botón derecho en LegacyAnchorResize y luego haga clic en Modificar.
  • En el cuadro Información del valor, escriba 1 y luego haga clic en Aceptar.
  • Salga del Editor del Registro.

O BIEN, si su síntoma es "Un botón de ActiveX cambia a un tamaño incorrecto en una hoja de trabajo de Excel 2010 después de ver la vista previa de impresión de la hoja de trabajo", entonces debe:

  • Haga clic en Inicio, haga clic en Ejecutar, escriba regedit en el cuadro Abrir y luego haga clic en Aceptar.
  • Busque y luego seleccione la siguiente subclave del registro: HKEY_CURRENT_USER / Software / Microsoft / Office / 14.0 / Excel / Options
  • En el menú Edición, seleccione Nuevo y luego haga clic en el valor DWORD (32 bits).
  • Escriba LegacyAnchorResize y luego presione Entrar.
  • En el panel Detalles, haga clic con el botón derecho en LegacyAnchorResize y luego haga clic en Modificar.
  • En el cuadro Información del valor, escriba 1 y luego haga clic en Aceptar.
  • Salga del Editor del Registro.

Buena suerte. Este problema es tan doloroso ...


He encontrado este problema en todos los objetos (botones, cuadros de texto, etc.). Cuando imprimo / imprimo una vista previa de varias hojas, todas las hojas, excepto la primera en la secuencia, han movido o cambiado el tamaño de los objetos. Después de muchas pruebas, la solución más simple en la página aumenta o disminuye y vuelve a la configuración original.


He encontrado una solución que funciona, y resuelve el problema para un solo usuario. Si no quieres leer mi pequeña diatriba, puedes saltarte directamente a la solución.

DESPOTRICAR:

He estado experimentando este estúpido problema desde los dinosaurios. Mientras tanto, Microsoft ha tenido muchos recursos para lanzar innumerables actualizaciones importantes al paquete de Office y, sin embargo, este problema no se aborda. Es absolutamente exasperante. No tengo ninguna razón para actualizar cuando algo básico como este no funciona. Seguramente alguien en MS usa controles ActiveX en Excel directamente en una pantalla de alta resolución, ¿no?

No experimenté este problema en mi PC de escritorio, no tengo idea de por qué, pero en mi Surface Pro 4 mis controles ActiveX se vuelven bananas cada vez que hago clic en ellos.

Hoy decidí llegar al fondo de esto. Busqué por todas partes, probé todas las soluciones propuestas en varios foros (ninguno de los cuales funciona por cierto). No importa si los controles están agrupados o no, bloqueados o no, la revisión está instalada o no.

Ayer tuve otro problema con las cosas que se comportaban mal en otra aplicación llamada Traktor (software para DJ), donde los controles saltaban cuando la escala de la pantalla se configuraba en un valor que no era un múltiplo exacto del 100%. Un usuario encontró que la solución era editar el modo de compatibilidad para esta aplicación. ¡Así que hice lo mismo para Excel, y funcionó! Ahora mis controles se mantienen, independientemente de la resolución de visualización y la escala.

SOLUCIÓN:

(Asegúrese de que Excel no se está ejecutando)

  1. Ubique EXCEL.EXE (en mi sistema esto se puede encontrar en C: / Archivos de programa / Microsoft Office / Office16 / EXCEL.EXE)
  2. Cambie el nombre de "EXCEL.EXE" a "_EXCEL.EXE" (básicamente cámbielo a otra cosa)
  3. Haga clic con el botón derecho en el archivo EXCEL.EXE renombrado, luego vaya a Propiedades> pestaña Compatiblity> sección Configuración
  4. Establecer Anular comportamiento de escalado alto DPI = Habilitado y Escalado realizado por = Aplicación
  5. Haga clic en Aceptar
  6. Cambie el nombre a "_EXCEL.EXE" de nuevo a "EXCEL.EXE"

Ahora Excel se ejecutará en su resolución nativa y los controles ActiveX no saldrán mal. El único inconveniente es que Excel no responderá a la escala de la pantalla, por lo que las cosas pueden parecer un poco más pequeñas de lo que a uno le gustaría. En mi Surface Pro 4 es más que aceptable

NOTAS:

1) Los pasos 2 y 6 son obligatorios con Excel 2016, ya que el cuadro de diálogo Propiedades para EXCEL.EXE no ofrece la pestaña Compatibilidad. Después de cambiar el nombre, la pestaña estará disponible.

2) Esta solución solo funciona para un solo usuario. Es decir, si envía un archivo Excel que contiene controles ActiveX a sus colegas, los controles ActiveX no se mostrarán correctamente en su sistema a menos que cambien la configuración del modo de compatibilidad.

3) Después de aplicar este truco, los archivos de Excel previamente corrompidos parecen corregirse al abrirlos, con todos los controles recuperando sus dimensiones originales previstas.

Por favor prueba y comenta, espero que esto pueda ayudar a alguien, ¡salud!


He tenido este problema varias veces y para resolverlo hice lo siguiente:

  1. Busque en mi C: / unidad cualquier archivo con la extensión ''.exd''
  2. Borre esos archivos (está bien hacerlo)
  3. Implementar código que reajusta el tamaño de los objetos ActiveX cada vez que se abre la hoja

Descubrí que este problema fue el causante de todo lo que enchufamos la computadora portátil en un proyector y guardamos el archivo. Luego, cada vez que surgía el problema, simplemente repetía los pasos 1. y 2. y mis objetos ActiveX se comportaban de nuevo


Intente cambiar la configuración del zoom al 100% con el control deslizante de la parte inferior derecha. Me lo arregló en ambos monitores de diferentes tamaños.


Las correcciones discutidas anteriormente, el cambio de tamaño de programación / reposicionamiento de los controles Active X después de hacer clic en eventos, o la modificación del registro (con la palabra D LegacyAnchorResize), no resolvió el problema para mí con Excel 2010 / Windows 7 64 bit.

La solución para mí se encontró aquí: https://support.microsoft.com/en-us/kb/838006

Para Excel 2010, el enlace indica:

  1. Salga de todos los programas que se están ejecutando.
  2. Haga clic en Inicio, haga clic en Ejecutar, en el cuadro Abrir, escriba regedit y luego haga clic en Aceptar.
  3. Busque y haga clic en la siguiente clave de registro:
  4. HKEY_CURRENT_USER / Software / microsoft / office / 14.0 / common
  5. En el menú Edición, seleccione Nuevo y luego haga clic en Clave.
  6. Escriba Draw, y luego presione Enter.
  7. En el menú Edición, seleccione Nuevo y luego haga clic en Valor DWORD.
  8. Escriba UpdateDeviceInfoForEmf, y luego presione Entrar
  9. Haga clic con el botón derecho en UpdateDeviceInfoForEmf y luego haga clic en Modificar. 10. En el cuadro Información del valor, escriba 1 y luego haga clic en Aceptar.
  10. En el menú Archivo, haga clic en Salir para cerrar el Editor del Registro.

Lo que comencé a hacer hace un tiempo fue tener un solo sub que establece el tamaño de todos mis controles. Luego puedo ejecutar este sub desde cualquier punto del código donde los controles crecen o se reducen. A veces es un trabajo demasiado quisquilloso, pero evita que mis botones se coman mi hoja de cálculo.


Me encuentro con este problema todo el tiempo en Excel 2010 (que siempre me trae de vuelta a este hilo) y aunque no he encontrado una solución al 100%, creo que tengo información que puede ayudar a otros.

Mientras jugaba tediosamente con los botones, descubrí que DIFERENTES EVENTOS para cada objeto causaban problemas diferentes. Por ejemplo,

  • Botón A: el tamaño del botón se reduciría en el evento MouseDown
  • Botón B - El texto se agrandaría en el evento MouseMove (pero solo después de que se hizo clic en el botón. AKA, hago clic en un botón, el código se ejecuta, dejo el mouse sobre el botón, y luego tan pronto como muevo el mouse el texto agrandar)
  • Cuadro de entrada de texto A: el texto se agranda en el evento MouseUp
  • Cuadro de entrada de texto B: el texto se agrandará en el evento LostFocus

La única solución que funciona para mí es escribir código para restablecer el tamaño / texto para cada evento de objeto que estaba causando el cambio de tamaño aleatorio. Al igual que ...

Donde MaterialNum es el nombre del cuadro de entrada, y MouseDown es el evento ...

Private Sub MaterialNum_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) '' Reset the size, font style, and size With Worksheets("QuoteForm").Shapes("MaterialNum") .Height = 21 .Width = 101.25 .Left = 972.75 .Top = 87 With .DrawingObject.Object.Font .Name = "Arial" .Size = 12 End With End With End Sub

Además, tuve que cambiar algunas opciones en Control de formato (haga clic derecho en objeto> Control de formato):

  • Pestaña Tamaño: la casilla de relación de aspecto de bloqueo está marcada
  • Pestaña Propiedades: el cuadro Imprimir Objeto está desmarcado

Además, en el panel Propiedades del objeto (haga clic derecho en el objeto> Propiedades) configuro TakeFocusOnClick como falso

Sí, esto lleva mucho tiempo y es tedioso, ya que tiene que hacerse con cada objeto, pero es el único arreglo que funciona para mí (¡y parece ser una solución más rápida que esperar a que Microsoft solucione esto!) . Espero que ayude a otros.

Espero que a otros les sea útil


Me parece que el problema solo parece ocurrir cuando se activan los paneles de congelación, que normalmente estarán activados en la mayoría de las aplicaciones, ya que colocará los botones de comando, etc. en una ubicación donde no se desplacen fuera de la vista.

La solución que ha funcionado es agrupar los controles pero también garantizar que el grupo se extienda más allá del área de congelación de paneles. Hago esto agregando un control fuera del área de congelar paneles, lo agrego al grupo pero también oculto el control para que no lo vea.


Mis monitores parecen estar configurados con resoluciones nativas, lo que profundiza el misterio. Sin embargo, he encontrado que hacer ALGO en el botón (mover o cambiar el tamaño) de alguna manera soluciona el problema. Esta rutina automatiza el movimiento y luego restaura la configuración original.

El siguiente código parece abordar el problema, al menos para los botones.

Public Sub StablizeButton(oButton As MSForms.CommandButton) With oButton '' If True, then temporary distortion is remedied only by clicking somewhere. '' If False, then the temporary distortion is remedied merely by moving the mouse pointer away. .TakeFocusOnClick = False '' For best results: In the Properties Sheet, initialize to False. .Left = .Left + 200 '' Move the button 200 units to the right, ... .Left = .Left - 200 '' ... and then move it back. End With End Sub

Invocarlo de la siguiente manera:

Private Sub MyButton_Click() StablizeButton MyButton '' Remainder of code. End Sub


No activewindow.Zoom = false esto, pero supongo que esto tiene que ver con la propiedad de zoom (tal vez agregar activewindow.Zoom = false ).

También puede hacer un ciclo en las formas que define .Placement = xlMove en workbook_open y window_activate, esto es para evitar que las formas cambien de tamaño con las celdas (pero se moverán con ellas).

Estoy usando Excel 2013 y nunca tuve este problema, tampoco lo uso de forma remota ..., solo intento ayudar con pequeñas ideas


Si no desea que el botón se mueva hacia adelante y hacia atrás, puede colocar la ubicación original en su código y luego compararla con esa. Desactive la actualización de la pantalla cuando se haga clic en el botón, verifique si la ubicación es diferente en el control, cámbiela, si es necesario, vuelva a activar la actualización de la pantalla

DP


Tema anterior, pero estaba teniendo este problema y lo resolví agrupando primero, en mi caso, los botones de opción que estaban teniendo el problema y luego simplemente configurando (restableciendo) el tamaño de este grupo en un Auto_Open como tal:

With ThisWorkbook .Worksheets("1").Shapes("grpInput").Width = 383.1 .Worksheets("2").Shapes("grpSuite").Width = 383.1 .Worksheets("3").Shapes("grpLoc").Width = 383.1 .Worksheets("4").Shapes("grpDecision").Width = 383.1 End With


Tuve el problema también con cuadros de lista de ActiveX y encontré lo siguiente en otro lugar y parece funcionar hasta el momento, y también parece ser la solución más fácil de transferir cuando se entrega la hoja de cálculo a otra persona:

"Mientras que ListBox tiene una propiedad IntegralHeight cuyo efecto secundario de una configuración FALSE evitará que ese control se desvíe, y mientras que los botones de comando tienen propiedades como mover / tamaño con celdas, etc., otros controles no son tan elegantes".

Y tienen más consejos: http://www.experts-exchange.com/articles/5315/Dealing-with-unintended-Excel-Active-X-resizing-quirks-VBA-code-simulates-self-correction.html


Tuvimos este problema también.No recuerdo exactamente qué fue lo que solucionó, ya que ahora estamos funcionando como se esperaba ... intente agrupar los controles. Creo que esa fue nuestra resolución.


descubrieron que la causa es que las personas abran la sphase en una máquina a la que se accede a través de Escritorio remoto, y existe una diferencia en la resolución de pantalla entre las máquinas locales y remotas. Esto afecta los controles disponibles en la caja de herramientas de control, pero aún experimentar el problema usando un control de botón de formularios de la vieja escuela, por lo que mi respuesta insatisfactoria es usar eso.


El problema parece estar relacionado con la forma en que Windows maneja resoluciones no nativas en los monitores y se puede evitar de varias maneras

El problema puede ser una pesadilla completa cuando sucede, pero solo ocurre intermitentemente.

Recientemente hemos estado probando una hoja de trabajo de Excel utilizada por unas pocas docenas de personas y hemos desarrollado una buena idea de la causa y de algunas soluciones posibles.

La causa parece estar relacionada con cualquier configuración donde las pantallas se usan en algo diferente a su resolución nativa. Esto puede suceder fácilmente si un usuario conecta un monitor externo a una computadora portátil y no elige cuidadosamente la configuración de pantalla resultante. Por ejemplo, si una computadora portátil está conectada a un proyector (quizás una anterior con una pantalla nativa de 1024 por 768), pero la computadora portátil es una de 1280 por 800 y el usuario elige duplicar la pantalla en lugar de extenderla (configuraciones en "conectarse a un proyector "o" muestra "panel de control en Windows 7), el resultado es una imagen impredecible y generalmente insatisfactoria en ambas pantallas con ambas en resoluciones no nativas. Hemos encontrado que estas configuraciones casi siempre causan serios problemas con los botones de Excel, especialmente con los controles ActiveX. A veces, en clics repetidos, se reducen a ilegibilidad; otras veces se expanden para cubrir toda la pantalla.

En su mayoría, cuando instruimos a los usuarios a utilizar la configuración de visualización extendida y el resultado es dos pantallas que usan resoluciones nativas, no vemos el problema.

También hay formas basadas en código para minimizar el problema. Intentamos restablecer la ubicación y el tamaño de los botones y controles cuando se hizo clic (lo que agrega mucho código tedioso si tiene muchos botones). Esto a veces funcionó. También tratamos de alternar la propiedad de autosize de verdadero a falso y viceversa (esto funciona manualmente en modo desarrollador) y esto soluciona más instancias, pero aparentemente no todas.


[EXCEL PROFESSIONAL PLUS 2016, 32BITS, VERSIÓN 1802, CONSTRUIR 9029.2167]

Estaba teniendo el mismo problema y pude resolver el problema personalizando la escala de la pantalla en Windows 10, 64 bits. Es extremadamente simple y funciona para un solo usuario. Simplemente siga las instrucciones a continuación y tendrá todos los controles de formulario, formas de hoja, figuras y controles ActiveX a su tamaño original. No es necesario codificar o hacer trucos / hechicerías / hacks avanzados. Si el enlace provisto está roto, simplemente repita estos pasos.

  1. Para establecer Escalamiento personalizado de pantalla en Windows 10, debe hacer lo siguiente.

    Configuración abierta.

  2. Ve a Configuración - Pantalla.
  3. A la izquierda, haz clic en el enlace Escala personalizada en "Escala y diseño".
  4. Se abrirá la página Diseño personalizado. Especifique un nuevo valor para el porcentaje de escala. [USE 100] !! ... y voilá. Cierre y vuelva a abrir Excel.

Es una publicación anterior, pero espero que ayude a cualquiera que esté lidiando con este molesto y estresante problema de Excel.

https://winaero.com/blog/set-display-custom-scaling-windows-10/