Excel VBA ComboBox DropDownbutton大小 – 改变了自己

我有一个工作簿与几个combobox(和列表框)和大量的VBA写在他们周围。 我已经在Workbook_Open过程中使用相同的代码来格式化他们几个星期,没有任何重大的麻烦。

昨天晚上,我远程login到我的工作电脑(有史以来第二次)编辑代码的一些其他部分(没有什么触及框的属性)。 过了一会儿,所有的盒子,列表和组合的格式变得疯狂起来。 列表框右侧的滚动条变得很大,滚动条也出现在底部。 combobox上的下拉button也变得很大 – 就像盒子一样宽。

我closures并重新打开了Excel,所有的框都回到了以前的开心状态,除了一个,仍然有一个像框一样宽的下拉button。 我的vba格式代码没有帮助。 重新启动电脑没有帮助。 我比较了应该相同的两个框的属性窗口(名称和左侧位置除外),没有什么不同。

那么反正我可以驯服,重置或以其他方式控制这个叛徒下拉button? 我希望我甚至没有在Excel中处理这种不可预知的行为,但我卡住了。

这是我的格式化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 

你遇到了在工作表上使用ActiveX控件的问题,我遇到了同样的问题,而且是间歇性的,随机的。

我发现真正解决问题的唯一方法是使用表单控件。 除非您select显示隐藏的对象,否则这些在工作表上更稳定,尽pipe隐藏不了智能感知。 他们也很灵活,并提供了大量的function – 除非你需要事件,因为他们不开火。

我遇到过同样的问题。 还没有部署到用户,但下面的代码似乎工作。 每次select工作表时只需重新设置大小。

 Private Sub Worksheet_Activate() ActiveSheet.Shapes("ComboBoxSelectAccount").Width = 300 ActiveSheet.Shapes("ComboBoxSelectAccount").Height = 20 End Sub 

HTH Rick

我花了很多时间,但在互联网上没有合适的解决scheme。

我有我的笔记本电脑屏幕上的问题(而不是在扩展坞的扩展桌面显示器上!)每次单击下拉button时,工作表中activeXcombobox的字体大小变小。 直到下拉button无法访问为止。

手动我可以通过更改开发人员模式下的combobox大小重置字体大小。

通过VBA我做以下解决微软问题:

 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 

希望它不要打扰,如果我写一些德语的话,以帮助我的本地语言的人:

  1. Combobox Schrift wird kleiner und kleiner

  2. Combobox Schriftändertsichselbstständig

  3. ComboboxSchriftgrösseautomatisch kleiner

  4. Combobox automatische AnpassungSchriftgrößedeaktivieren

我有同样的问题,不知道为什么,但如果你调整它,那么它就会变得正常。 所以我插入以下内容来解决:

 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 

我做了一些戳动,发现如果你有PageBreakPreview ON,它会导致resize的问题。 回到正常视图,问题就消失了。

我只是移动形状来解决

 Private Sub MyComboBox_DropButtonClick() ActiveSheet.Shapes("ComboBox1").Top = 1 ActiveSheet.Shapes("ComboBox1").Top = 2 End Sub