Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA组合框下拉按钮大小--更改了自身_Excel_Vba_Combobox_Drop Down Menu - Fatal编程技术网

Excel VBA组合框下拉按钮大小--更改了自身

Excel VBA组合框下拉按钮大小--更改了自身,excel,vba,combobox,drop-down-menu,Excel,Vba,Combobox,Drop Down Menu,我有一个带有几个组合框(和列表框)的工作簿,以及围绕它们编写的大量vba。我已经在Workbook_Open过程中使用了相同的代码来格式化它们好几个星期了,没有遇到任何重大问题 昨晚我将桌面电脑远程连接到我的工作电脑(这是有史以来的第二次)来编辑代码的其他部分(根本没有涉及到盒子属性)。过了一会儿,所有框的格式,列表和组合,都变得疯狂。列表框右侧的滚动条变得巨大,巨大的滚动条也出现在它们的底部。组合框上的下拉按钮也变大了——几乎和框一样宽 我关闭并重新打开Excel,所有的框都回到了以前的快乐状

我有一个带有几个组合框(和列表框)的工作簿,以及围绕它们编写的大量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


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


我发现真正解决问题的唯一方法是使用表单控件。除非您选择显示隐藏对象,否则这些对象在工作表上更稳定,尽管它们对intellisense是隐藏的。它们也非常灵活,提供了大量的功能—除非您需要事件,因为它们不会触发事件。

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


我发现真正解决问题的唯一方法是使用表单控件。除非您选择显示隐藏对象,否则这些对象在工作表上更稳定,尽管它们对intellisense是隐藏的。它们也非常灵活,提供了大量功能——除非您需要事件,因为它们不会触发事件。

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

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

里克

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

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

里克

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

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

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

通过VBA,我执行以下操作,解决了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
希望不要打扰我,如果我写一些德语单词来帮助我母语的人:

  • 组合箱Schrift wird kleiner和kleiner

  • 组合框Schriftändert sich Selbständig

  • 组合式Schriftgrösse Automaticsch kleiner

  • 自动组合框和自动组合框


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

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

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

    通过VBA,我执行以下操作,解决了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
    
    希望不要打扰我,如果我写一些德语单词来帮助我母语的人:

  • 组合箱Schrift wird kleiner和kleiner

  • 组合框Schriftändert sich Selbständig

  • 组合式Schriftgrösse Automaticsch kleiner

  • 自动组合框和自动组合框


  • 我也有同样的问题,不知道为什么,但如果你调整它的大小,那么它会再次变得正常。因此,我插入以下内容来解决:

    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
    

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

    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,它会导致调整大小的问题。返回到正常视图,问题就会消失。

    我做了一些尝试,发现如果打开了PageBreakPreview,则会导致大小调整问题。回到正常视图,问题就消失了。

    我只是移动了形状来修复

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

    我只是移动形状来修复

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

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

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

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


    我发现,当我复制组合框并删除原件时,新的组合框没有问题。将它们全部选中有点烦人,但至少它们的属性和链接的单元格保留下来并可以使用。

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

    我发现,当我复制组合框并删除原始组合框时,新组合框没有