Excel VBA ComboBox DropDown按钮大小 - 自行更改

时间:2012-03-01 14:30:59

标签: excel vba combobox drop-down-menu

我有一个包含几个组合框(和列表框)的工作簿以及围绕它们编写的大量vba。我在Workbook_Open过程中使用相同的代码将它们格式化数周,没有任何重大麻烦。

昨晚我已经远程登录到我的工作计算机(有史以来第二次)编辑代码的其他部分(根本没有触及盒子属性)。过了一会儿,所有盒子,列表和组合的格式化都变得疯狂了。列表框上的右侧滚动条变得很大,并且它们底部也出现了巨大的滚动条。组合框上的下拉按钮也变得非常大 - 就像盒子一样宽。

我关闭并重新打开了Excel,所有的盒子都回到了以前的幸福状态,除了一个,它仍然有一个与盒子一样宽的下拉按钮。我的vba格式代码没有帮助。重新启动计算机没有帮助。我比较了两个应该相同的盒子的属性窗口(名称和左侧位置除外),没有什么不同。

那么无论如何我可以驯服,重置或以其他方式控制这个叛徒下拉按钮?我希望我甚至不在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

8 个答案:

答案 0 :(得分:2)

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

我发现真正解决问题的唯一方法是使用表单控件。除非您选择显示隐藏的对象,否则它们在工作表中更加稳定,但除了智能感知之外,它们是隐藏的。它们也非常灵活,并提供了很多功能 - 除非你需要事件,因为它们不会触发它们。

答案 1 :(得分:1)

我有同样的问题。尚未部署到用户,但下面的代码似乎工作。只需在每次选择工作表时重置大小。

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

HTH 瑞克

答案 2 :(得分:1)

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

我遇到的问题是在我的笔记本电脑屏幕上(不在扩展坞的扩展桌面显示器上!)每次单击下拉按钮时,工作表中的activeX组合框的字体大小变小。直到下拉按钮无法访问小。

手动我可以通过在开发者模式下更改组合框大小来重置字体大小。

通过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. ComboboxSchriftändertsichselbstständig

  3. ComboboxSchriftgrösseautomatischkleiner

  4. Combobox automatischeAnpassungSchriftgrößedeaktivieren

答案 3 :(得分:1)

我有同样的问题,不明白为什么,但如果你调整它,那么它再次成为正常。所以我插入以下内容来解决:

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

答案 4 :(得分:0)

我做了一些探讨,发现如果你有PageBreakPreview ON,它将导致调整大小问题。回到普通视图,问题就消失了。

答案 5 :(得分:0)

我只是移动形状来修复

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

答案 6 :(得分:0)

对于列表框,为防止在更改字体或重新打开文件时调整它们的大小,请进入列表框属性,并将“积分高度”更改为false。

答案 7 :(得分:0)

我也在远程连接的地方发现了这个问题。我认为这与远程计算机和您登录的计算机上的屏幕分辨率不同有关。

我发现当我复制组合框并删除原件时,新的没有问题。选择它们有点烦人,但至少它们的属性和链接的单元格仍然存在并且可以使用。