listindex - ejemplos combobox vba excel
Tamaño de botón de Excel DBA ComboBox DropDown-cambiado a sí mismo (6)
Busqué algo y encontré que si tienes PageBreakPreview activado, provocará un problema de cambio de tamaño. Regresa a la Vista Normal y el problema desaparece.
Tengo un libro de trabajo con varias cajas combinadas (y listboxes) y una gran cantidad de vba escritos a su alrededor. He usado el mismo código en el procedimiento Workbook_Open para formatearlos durante semanas, sin mayores problemas.
Anoche remoté mi computadora de escritorio (por segunda vez) para editar algunas otras partes del código (nada que tocara las propiedades del cuadro). En un momento después de un tiempo, el formateo de todos los cuadros, la lista y el combo, se volvió loco. Las barras de desplazamiento del lado derecho en los cuadros de lista se hicieron enormes, y barras de desplazamiento enormes aparecieron en la parte inferior de ellas también. Y el botón desplegable de los cuadros combinados también se hizo enorme, tan ancho como el cuadro.
Cerré y volví a abrir Excel, y todos los cuadros volvieron a su antiguo estado de felicidad, a excepción de uno, que todavía tiene un botón desplegable tan ancho como la caja. Mi código de formato vba no ayuda. Reiniciar la computadora no ayuda. Comparé la ventana de propiedades para dos cuadros que deberían ser idénticos (excepto el nombre y la posición de la izquierda), y allí no hay nada diferente.
¿De todos modos puedo domesticar, reiniciar o controlar este botón desplegable renegado? Ojalá ni siquiera estuviera en Excel lidiando con este tipo de comportamiento impredecible, pero estoy atascado.
Aquí está mi formato vba:
With ThisWorkbook.Sheets(c_stMatrixSheet).OLEObjects(c_stMatrixTypeBox)
.Width = 120
.Top = 14
.Left = 878
Call FormatComboBox(.Object)
.Object.AddItem c_stAMatrix
.Object.AddItem c_stBMatrix
.Object.AddItem c_stCMatrix
.Object.Text = c_stAMatrix
End With
...
Private Sub FormatComboBox(bxComboBox As msforms.ComboBox)
With bxComboBox
.Clear
.Height = 19.5
.Font.Name = c_stDropBoxFont
.Font.Size = 10
.AutoSize = False
.Enabled = True
.Locked = False
.Placement = xlFreeFloating
End With
End Sub
Pasé mucho tiempo pero no encontré una solución adecuada en Internet.
Tuve el problema de que en la pantalla de mi computadora portátil (¡no en el monitor de escritorio extendido en la estación de acoplamiento!), El tamaño de fuente de un cuadro combinado de ActiveX en una hoja de trabajo se reducía cada vez que hacía clic en el botón desplegable. Hasta que el botón desplegable sea inaccesible, pequeño.
Manualmente podía restablecer el tamaño de la fuente cambiando el tamaño del cuadro combinado en el modo desarrollador.
Por VBA hago lo que resuelve el problema de Microsofts:
Private Sub MyComboBox_DropButtonClick()
''MyComboBox.Font.Size = 12 ''Has no effect!!!
Dim CbxWidth = 300 As Single ''How big the combobox should be
MyComboBox.Width = CbxWidth + 1
ComboboxUpdate ''or whatever you want to do
MyComboBox.Width = CbxWidth
End Sub
Espero que no moleste si escribo algunas palabras alemanas para ayudar también a las personas en mi idioma nativo:
Combobox Schrift wird kleiner und kleiner
Combobox Schrift ändert sich selbstständig
Combobox Schriftgrösse automatisch kleiner
Combobox automatische Anpassung Schriftgröße deaktivieren
Solo muevo la forma para arreglar
Private Sub MyComboBox_DropButtonClick()
ActiveSheet.Shapes("ComboBox1").Top = 1
ActiveSheet.Shapes("ComboBox1").Top = 2
End Sub
Te has encontrado con el problema de usar controles ActiveX en las Hojas de trabajo, he tenido el mismo problema y es intermitente y aleatorio.
La única forma que he encontrado para arreglar realmente las cosas es usar controles de formularios. Estos son mucho más estables en las hojas de trabajo aunque están ocultos de intellisense a menos que elijas mostrar objetos ocultos. También son bastante flexibles y ofrecen una gran cantidad de funcionalidades, a menos que necesite eventos ya que no los activan.
Tuve el mismo problema, no sé por qué, pero si cambias el tamaño, entonces vuelve a ser normal. Entonces inserté los siguientes para resolver:
Private Sub ComboBox1_LOSTFocus()
Application.ScreenUpdating = False
ActiveSheet.Shapes.Range(Array("ComboBox1")).Select
ActiveSheet.Shapes("ComboBox1").ScaleWidth 1.25, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("ComboBox1").ScaleHeight 1.25, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("ComboBox1").ScaleWidth 0.8, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("ComboBox1").ScaleHeight 0.8, msoFalse, _
msoScaleFromTopLeft
Application.ScreenUpdating = True
End sub
Tuve el mismo problema. Todavía no se han implementado para los usuarios, pero el código siguiente parece funcionar. Simplemente restablece el tamaño cada vez que se selecciona la hoja de trabajo.
Private Sub Worksheet_Activate()
ActiveSheet.Shapes("ComboBoxSelectAccount").Width = 300
ActiveSheet.Shapes("ComboBoxSelectAccount").Height = 20
End Sub
HTH Rick