Excel VBA ComboBox下拉按钮大小--自动更改

124 浏览
0 Comments

Excel VBA ComboBox下拉按钮大小--自动更改

我有一个包含多个复选框(和列表框)以及大量围绕它们编写的VBA代码的工作簿。我使用相同的代码在Workbook_Open过程中为它们格式化了几周,没有出现任何大问题。\n昨晚我远程桌面连接到我的工作电脑(只是第二次),以编辑代码的其他部分(完全没有触及框属性的部分)。在一段时间之后,所有的复选框、列表框和组合框的格式都变得混乱不堪。列表框的右侧滚动条变得巨大,底部也出现了巨大的滚动条。组合框的下拉按钮也变得巨大,几乎与框一样宽。\n我关闭并重新打开Excel,所有的框都恢复到原来的正常状态,除了一个框,它的下拉按钮仍然与框一样宽。我的VBA格式化代码没有起作用。重启电脑也没有效果。我比较了两个应该完全相同的框的属性窗口(除了名称和左侧位置),但是没有任何不同之处。\n所以,有没有办法可以控制、重置或以其他方式控制这个框的下拉按钮?我希望自己根本不需要在Excel中处理这种不可预测的行为,但我无能为力。\n这是我的格式化VBA代码:\n

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

\n...\n

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

0
0 Comments

Excel VBA ComboBox下拉按钮的大小--自动更改的原因和解决方法

在我的笔记本屏幕上(而不是在笔记本扩展台中的外接显示器上),一个工作表中的ActiveX组合框的字体大小每次我点击下拉按钮时都会变小。直到下拉按钮变得非常小,无法访问。

我尝试了很多时间,但在互联网上找不到合适的解决方法。

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

通过VBA,我做了以下操作,解决了Microsoft的问题:

Private Sub MyComboBox_DropButtonClick()
    'MyComboBox.Font.Size = 12 '没有效果!!!
    Dim CbxWidth As Single '组合框的大小
    CbxWidth = 300
    MyComboBox.Width = CbxWidth + 1
    ComboboxUpdate '或者你想做的任何操作
    MyComboBox.Width = CbxWidth
End Sub

希望这样写一些德语单词不会打扰,也可以帮助到我的母语人士:

1. Combobox Schrift wird kleiner und kleiner

2. Combobox Schrift ändert sich selbstständig

3. Combobox Schriftgrösse automatisch kleiner

4. Combobox automatische Anpassung Schriftgröße deaktivieren

通过以上VBA代码,我成功解决了Excel VBA ComboBox下拉按钮大小自动更改的问题。希望这对于遇到相同问题的人们有所帮助。

0
0 Comments

问题:Excel VBA ComboBox DropDown按钮大小自动改变的原因和解决方法

最近我遇到了一个问题,就是在Excel VBA中,ComboBox的DropDown按钮的大小会自动改变。虽然我还没有将这个程序部署给用户,但下面的代码似乎解决了这个问题。我只需要在每次选择工作表时重置该按钮的大小。

解决方法如下:

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

希望对你有所帮助!

Rick

0
0 Comments

问题原因:使用ActiveX控件在工作表上时遇到问题,这个问题是间歇性的,且随机发生。

解决方法:使用表单控件可以真正解决这个问题。虽然它们在智能感应中是隐藏的,除非选择显示隐藏对象,但它们在工作表上更加稳定。它们也非常灵活,提供了很多功能,除非需要事件,因为它们不会触发事件。

接下来,我们需要在VBA中访问表单属性来开始实验。可以通过以下步骤来查看一个表单对象:

1. 点击"工具",选择"对象浏览器"。

2. 在对象浏览器中,右键点击"成员",选择"显示隐藏成员"。

3. 然后,在工作表中,表单下拉框是一个集合,可以通过sheetx.dropdowns(x)来访问。

4. 实际上,不需要查看隐藏成员,代码仍然可以正常运行,但查看隐藏成员可以使事情变得更加容易。

以上就是解决这个问题的原因和方法,通过使用表单控件来代替ActiveX控件,可以解决下拉框大小自动更改的问题。

0