我有一个包含几个组合框(和列表框)的工作簿以及围绕它们编写的大量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
答案 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
如果我写一些德语单词以帮助我的母语中的人,希望它不要打扰:
Combobox Schrift wird kleiner und kleiner
ComboboxSchriftändertsichselbstständig
ComboboxSchriftgrösseautomatischkleiner
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)
我也在远程连接的地方发现了这个问题。我认为这与远程计算机和您登录的计算机上的屏幕分辨率不同有关。
我发现当我复制组合框并删除原件时,新的没有问题。选择它们有点烦人,但至少它们的属性和链接的单元格仍然存在并且可以使用。