代码之家  ›  专栏  ›  技术社区  ›  Nick

Excel:难以置信的收缩和扩展控制

  •  55
  • Nick  · 技术社区  · 17 年前

    偶尔,我会遇到一个电子表格,它有魔法按钮或列表框,随着时间的推移,它们会变大或变小。

    代码中没有任何指示。

    还有人经历过这种快乐吗?

    33 回复  |  直到 8 年前
        1
  •  27
  •   matt_black    14 年前

    这个问题似乎与Windows在显示器上处理非本机分辨率的方式有关,可以通过几种方式避免。

    当问题发生时,它可能是一个完全的噩梦,但它只是间歇性的发生。

    我们最近测试了几十个人使用的Excel工作表,并对原因和一些可能的修复方法有了很好的了解。

    原因似乎与任何设置有关,在这些设置中,屏幕被用于除其本机分辨率之外的其他用途。如果用户将外部监视器插入笔记本电脑,而不仔细选择最终的屏幕配置,则很容易发生这种情况。例如,如果将笔记本电脑插入投影仪(可能是带有本地1024 x 768显示器的旧投影仪),但笔记本电脑是1280 x 800,用户选择 复制品 显示而不是 延伸 它(Windows7中“连接到投影仪”或“显示”控制面板中的设置),结果是在两个屏幕上都显示不可预测且通常不令人满意的非本机分辨率图像。我们发现这些设置 几乎总是 导致Excel按钮出现严重问题,尤其是ActiveX控件。有时,反复单击时,它们会缩小到不可读;有时它们会扩展到覆盖整个屏幕。

    通常,当我们指示用户使用 延伸 显示设置和结果是两个屏幕都使用本机分辨率,我们看不到问题。

    还有一些基于代码的方法来最小化问题。我们尝试在按钮和控件被单击时重置它们的位置和大小(如果您有很多按钮,这会添加很多冗长的代码)。这有时奏效。我们还尝试将AutoSize属性从true切换为false,然后返回(这在开发人员模式下手动工作),这样可以修复更多实例,但显然不是全部。

        2
  •  11
  •   Nick    15 年前

    发现原因是人们打开通过远程桌面访问的计算机上的电子表格,并且本地和远程计算机的屏幕分辨率存在差异。这会影响控件工具箱中可用的控件,但使用旧的学校窗体按钮控件仍会遇到此问题,因此我不满意的答案是使用它。

        3
  •  5
  •   peterg4000    12 年前

    多年来,这一直困扰着我。 有许多修复方法,但它们似乎是命中或未命中。 它仍在Excel 2010中发生(2014年5月发生在我身上),一些报告仍在Excel 2013中发生。 我发现与我的情况至少匹配的最佳描述(Excel 2010,不涉及RDP,不涉及打印预览)如下:

    Microsoft Excel Support Team Blog: ActiveX and form controls resize themselves when clicked or doing a print preview (in Excel 2010)

    (这可能对Excel 2013用户没有帮助,抱歉)

    编辑:在technet链接失效的情况下添加详细信息,technet文章说:

    首先安装Microsoft Hotfix 2598144 for Excel 2010 可用: here .

    其次,如果你的症状是 “在Excel 2010工作表中单击某个ActiveX按钮后,该按钮将更改为不正确的大小”,则应:

    • 单击“开始”,单击“运行”,在“打开”框中键入regedit,然后单击“确定”。
    • 找到并选择以下注册表子项HKEY\U CURRENT\USER\SOFTWARE\Microsoft\Office\14.0\Excel\Options
    • 在“编辑”菜单上,指向“新建”,然后单击“双字(32位)值”。
    • 键入legacyanchorresize,然后按Enter。
    • 在“详细信息”窗格中,右键单击“legacyanchorresize”,然后单击“修改”。
    • 在“值数据”框中,键入1,然后单击“确定”。
    • 退出注册表编辑器。

    或者第二,如果你的症状是 “在Excel 2010中查看工作簿的打印预览后,工作簿中的按钮表单控件显示不正确”,则应:

    • 单击“开始”,单击“运行”,在“打开”框中键入regedit,然后单击“确定”。
    • 找到并选择以下注册表子项:HKEY\U CURRENT\USER\SOFTWARE\Microsoft\Office\14.0\Excel\Options
    • 在“编辑”菜单上,指向“新建”,然后单击“双字(32位)值”。
    • 键入multisheetprint,然后按Enter。
    • 在“详细信息”窗格中,右键单击“多页打印”,然后单击“修改”。
    • 在“值数据”框中,键入1,然后单击“确定”。
    • 再次选择以下注册表子项:HKEY\U CURRENT\USER\SOFTWARE\Microsoft\Office\14.0\Excel\Options
    • 在“编辑”菜单上,指向“新建”,然后单击“双字(32位)值”。
    • 键入legacyanchorresize,然后按Enter。
    • 在“详细信息”窗格中,右键单击“legacyanchorresize”,然后单击“修改”。
    • 在“值数据”框中,键入1,然后单击“确定”。
    • 退出注册表编辑器。

    或者第二,如果你的症状是 “查看工作表的打印预览后,Excel 2010工作表中的ActiveX按钮更改为不正确的大小”,则应:

    • 单击“开始”,单击“运行”,在“打开”框中键入regedit,然后单击“确定”。
    • 找到并选择以下注册表子项:HKEY\U CURRENT\USER\SOFTWARE\Microsoft\Office\14.0\Excel\Options
    • 在“编辑”菜单上,指向“新建”,然后单击“双字(32位)值”。
    • 键入legacyanchorresize,然后按Enter。
    • 在“详细信息”窗格中,右键单击“legacyanchorresize”,然后单击“修改”。
    • 在“值数据”框中,键入1,然后单击“确定”。
    • 退出注册表编辑器。

    祝你好运。这个问题太痛苦了…

        4
  •  5
  •   TheG    12 年前

    这个问题实际上是由于屏幕分辨率。最常见的情况是当用户在使用Excel应用程序时连接到投影仪或WebEx。

    这个问题的一个简单解决方案是要求用户在没有任何外围设备连接(投影仪)的情况下重新启动机器,然后再次打开Excel应用程序。

        5
  •  4
  •   baffled68    11 年前

    前面讨论的修复程序,在单击事件后对活动X控件进行编程调整大小/重新定位,或者修改注册表(使用d字legacyanchorresize),都没有用Excel2010/Windows7 64位解决这个问题。

    我的解决方案在这里找到: https://support.microsoft.com/en-us/kb/838006

    对于Excel 2010,链接指示:

    1. 退出所有正在运行的程序。
    2. 单击开始,单击运行,在打开框中键入regedit,然后单击确定。
    3. 找到,然后单击以下注册表项:
    4. hkey_current_user\software\microsoft\office\14.0\common
    5. 在“编辑”菜单上,指向“新建”,然后单击“键”。
    6. 键入draw,然后按Enter。
    7. 在“编辑”菜单上,指向“新建”,然后单击“双字值”。
    8. 键入updateviceinfoforef,然后按Enter键
    9. 右键单击UpdateDeviceInfoForeff,然后单击Modify。 10.在“值数据”框中,键入1,然后单击“确定”。
    10. 在“文件”菜单上,单击“退出”关闭注册表编辑器。
        6
  •  1
  •   PA.    17 年前

    是否可以将按钮定义为粘在单元格的角上,而不是自由浮动?

    用它检查

    格式属性对象定位

    除了“用单元格移动和调整大小”之外,其他选项都可以选择。

        7
  •  1
  •   Paul Margus    12 年前

    我的显示器似乎都设置为本地分辨率,这加深了谜团。但是,我发现对按钮做一些事情(移动或调整大小)可以解决这个问题。此例程自动移动,然后恢复原始设置。

    下面的代码似乎解决了这个问题,至少对于按钮来说是这样。

    Public Sub StablizeButton(oButton As MSForms.CommandButton)
    
        With oButton
    
            ' If True, then temporary distortion is remedied only by clicking somewhere.
            ' If False, then the temporary distortion is remedied merely by moving the mouse pointer away.
            .TakeFocusOnClick = False
            ' For best results:  In the Properties Sheet, initialize to False.
    
            .Left = .Left + 200             ' Move the button 200 units to the right, ...
            .Left = .Left - 200             ' ... and then move it back.
    
        End With
    
    End Sub
    

    调用它如下:

    Private Sub MyButton_Click()
        StablizeButton MyButton
    
        ' Remainder of code.
    End Sub
    
        8
  •  1
  •   AbcAeffchen    11 年前

    我已经遇到过几次这个问题,为了解决这个问题,我做了以下操作:

    1. 在我的C:\驱动器中搜索扩展名为“.exd”的任何文件
    2. 删除这些文件(可以这样做)
    3. 实现每次打开工作表时重新调整ActiveX对象大小的代码

    我发现这个问题是由我们把笔记本电脑插入投影仪并保存文件引起的。然后每次出现问题,我都重复步骤1。2。我的ActiveX对象又开始工作了

        9
  •  1
  •   Excel Novice    11 年前

    我们刚刚在公司级别解决了这个问题,将以下模块添加到所有启用宏的工作簿中:

    Option Explicit
    
    Type ButtonSizeType
        topPosition As Single
        leftPosition As Single
        height As Single
        width As Single
    End Type
    
    Public myButton As ButtonSizeType
    
    Sub GetButtonSize(cb As MSForms.CommandButton)
    ' Save original button size to solve windows bug that changes the button size to
    ' adjust to screen resolution, when not in native resolution mode of screen
        myButton.topPosition = cb.top
        myButton.leftPosition = cb.Left
        myButton.height = cb.height
        myButton.width = cb.width
    End Sub
    
    Sub SetButtonSize(cb As MSForms.CommandButton)
    ' Restore original button size to solve windows bug that changes the button size to
    ' adjust to screen resolution, when not in native resolution mode of screen
        cb.top = myButton.topPosition
        cb.Left = myButton.leftPosition
        cb.height = myButton.height
        cb.width = myButton.width
    End Sub
    

    只需在代码的开头和结尾这样调用它们:

    Private Sub CommandButton1_Click()
    
    Application.ScreenUpdating = False
    ' Turn off ScreenUpdating to make sure the user dosn't see the buttons flicker
    GetButtonSize CommandButton1 ' Saves original button size
    ' Do cool things
    '
    '
    '
    SetButtonSize CommandButton1 ' Restores original button size
    
    Application.ScreenUpdating = True
    ' Turn ScreenUpdating back on when you're done
    End Sub
    
        10
  •  1
  •   MX313    10 年前

    旧线程,但我有这个问题,并解决了它首先分组,在我的情况下,选项按钮一起有问题,然后简单地设置(重置)在一个自动打开的组的大小,如:

    With ThisWorkbook
        .Worksheets("1").Shapes("grpInput").Width = 383.1
        .Worksheets("2").Shapes("grpSuite").Width = 383.1
        .Worksheets("3").Shapes("grpLoc").Width = 383.1
        .Worksheets("4").Shapes("grpDecision").Width = 383.1
    End With
    
        11
  •  1
  •   Luiz Vaughan    8 年前

    [Excel Professional Plus 2016,32位,版本1802,内部版本9029.2167]

    我也有同样的问题 我可以解决这个问题 通过在Windows10中自定义显示比例,64位。它非常简单,只适用于一个用户。只需按照下面的说明操作,所有表单控件、工作表形状、图形和ActiveX控件都将恢复到原始大小。无需编码或进行高级欺骗/巫术/黑客。如果提供的链接断开,只需重复这些步骤。

    1. 要在Windows10中设置显示自定义缩放,需要执行以下操作。

      打开设置。

    2. 转到设置-显示。
    3. 在左侧,单击“缩放和布局”下的自定义缩放链接。
    4. 将打开自定义布局页。为缩放百分比指定一个新值。[使用100 ]!!还有VoRE。关闭并重新打开Excel。

    这是一个旧的帖子,但我希望它能帮助任何人谁处理这个烦人和压力Excel的问题。

    https://winaero.com/blog/set-display-custom-scaling-windows-10/

        12
  •  1
  •   Joe Stellato    8 年前

    这个问题非常令人沮丧,我的经验是,通常在ActiveX对象上正确设置属性。我已经从上面修改了一个UDF,使其能够在任何活动工作表上运行,这将使所有内容恢复到收缩前的状态。

    Public Sub ResizeAllOfIt()
    Dim myCtrl As OLEObject
    
    For Each myCtrl In ActiveSheet.OLEObjects
    
     Dim originalHeight
     Dim originalWidth
    
     originalWidth = myCtrl.width
     originalHeight = myCtrl.height
    
      myCtrl.height = originalHeight - 1 
      myCtrl.height = originalHeight 
      myCtrl.width = originalWidth
    
    Next myCtrl
    
    End Sub
    
        13
  •  1
  •   Angelo Bovino    8 年前

    我在Excel2010中一直遇到这个问题(这让我回到了这个话题),虽然我没有找到100%的修复方法,但我相信我有一些信息可以帮助其他人。

    在无聊地玩弄按钮时,我发现每个对象的不同事件导致了不同的问题。例如,

    • 按钮A-鼠标悬停事件时按钮的大小将缩小
    • 按钮B-鼠标移动事件上的文本会放大(但只有在单击按钮之后)。也就是说,我单击一个按钮,代码执行,让鼠标悬停在按钮上,然后只要我移动鼠标,文本就会放大)
    • 文本输入框A-文本将在mouseup事件上放大
    • 文本输入框B-文本将放大LostFocus事件

    唯一适合我的解决方案是编写代码来重置导致随机调整大小的每个对象事件的大小/文本。像这样…

    其中MaterialNum是输入框的名称,MouseDown是事件…

    Private Sub MaterialNum_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    
        ' Reset the size, font style, and size
        With Worksheets("QuoteForm").Shapes("MaterialNum")
            .Height = 21
            .Width = 101.25
            .Left = 972.75
            .Top = 87
            With .DrawingObject.Object.Font
                .Name = "Arial"
                .Size = 12
            End With
        End With
    
    End Sub
    

    此外,我还必须在“格式控制”(右键单击“对象”>“格式控制”)中更改一些选项:

    • “大小”选项卡:选中“锁定纵横比”框
    • “属性”选项卡:未选中“打印对象”框

    此外,在“对象属性”窗格(右键单击“对象”>“属性”)中,我将TakeFocusOnClick设置为false。

    是的,这很费时,也很乏味,因为每个对象都必须完成,但这是唯一适合我的修复方法。 (这似乎比等待微软来解决这个问题要快得多!!!!) . 希望它能帮助别人。

    我希望其他人觉得这有帮助

        14
  •  1
  •   PGSystemTester    8 年前

    我注意到这些答案中没有一个将控件绑定到行/列。这对我来说非常有效。基本上,你“测量”你想要的对象去哪里,然后在工作表激活代码中设置它。在下面的示例中,该按钮将始终捕捉到覆盖d8:f10的位置。行/列往往比计算机分辨率更可靠。

    Private Sub Worksheet_Activate()
    'Note this is done in the sheet code, not a Module.
    
    
    
    With Me.Shapes("CommandButton1")
    
        .Left = Me.Range("A1:C1").Width
        .Top = Me.Range("a1:a7").Height
        .Width = Me.Range("D1:F1").Width
        .Height = Me.Range("A8:a10").Height
    
    End With
    
    End Sub
    

    结果是这样的:

    enter image description here

        15
  •  0
  •   jfkelley    12 年前

    这很奇怪。在查询时(无论是在代码中还是使用属性表),宽度和高度属性不会收缩,但显然它们会发生变化。

    我注意到,如果我使用属性表,将宽度从标准的15改为14,然后改回15,它就会修复它。

    下面的代码适用于我(并且在工作表上有一个有趣的视觉效果:你点击,它收缩,屏幕闪烁,它向后扩展)。

    我的代码解决方案(在复选框的Click事件上):

    Dim myCtrl As OLEObject
    For Each myCtrl In ActiveSheet.OLEObjects
      myLab = myCtrl.Name
      myCtrl.Height = 14 ' to "wake up" the property.
      myCtrl.Height = 15 ' to reset it back to normal
      myCtrl.Width = 12 ' just making sure
    Next myCtrl
    
        16
  •  0
  •   Cement Sneakers    12 年前

    在搜索网络后,它会缝合,最好的解决方案是将文件保存为.xlsb(二进制)而不是.xlsm

        17
  •  0
  •   Danno    12 年前

    我开始做的是有一个单独的子设置我所有控件的大小。然后,我可以从代码中控制项增长或收缩的任何点运行此子项。有时这是一个非常精细的工作,但它可以防止我的按钮吃我的电子表格。

        18
  •  0
  •   Patrick Lepelletier    12 年前

    我没有测试这个,但我想这与缩放属性有关(可能添加 activewindow.Zoom = false )

    也可以在wich定义的形状上执行循环 .Placement = xlMove 打开工作簿并激活窗口时,这是为了防止形状随单元格调整大小(但会随单元格移动)。

    我使用的是Excel 2013,从未遇到过这个问题,也从未远程使用过它……,只是想帮助解决一些小问题。

        19
  •  0
  •   Simon    11 年前

    我可能找到了解决办法:“ 确保工作表上的所有形状具有唯一的名称 (包括复选框/单选按钮(OLE控件)以及图片和其他形状类型…)

    因为问题是间歇性的,我不能保证。我现在有两个表单可以使用这个修复程序正常工作,但是“二”是一个非常小的样本集,可能只是巧合。我采取了以下步骤:

    我在空白工作表(工作表1)上列出了问题工作表(工作表)中的所有形状:

    Sub ListShapes()
    Dim spShape As Shape
    Dim intRow As Integer
    
    
    Sheet1.Range("A1:F1") = Array("Name", "Left", "Top", "Width", "Height", "Bottom Right Cell")
    intRow = 2
    
    For Each spShape In wsForm.Shapes        
    
        Sheet1.Cells(intRow, 1).Value = spShape.Name
        Sheet1.Cells(intRow, 2).Value = spShape.Left
        Sheet1.Cells(intRow, 3).Value = spShape.Top
        Sheet1.Cells(intRow, 4).Value = spShape.Width
        Sheet1.Cells(intRow, 5).Value = spShape.Height
        Sheet1.Cells(intRow, 6).Value = spShape.BottomRightCell.Address
    
        intRow = intRow + 1
    
    Next
    End Sub
    

    然后,我使用G列中的公式计算A列中的每个形状名称:

    =countif($A$2:$A$120,A2)

    显然,调整范围以适应…然后,您可以筛选此列中没有“1”的所有形状。“右下角单元格”有助于在工作表中查找形状:通过选择形状进行重命名,然后在Excel左上角的“名称/引用”框中输入新的唯一值。

    这个形状列表还帮助找到一些“死”的形状(0高或0宽),这些形状早已被遗忘和未使用。

    我希望这对你有用!关于那件事…我希望它对我以后的事情有用…

        20
  •  0
  •   DPIII    11 年前

    如果不想显示前后移动的按钮,可以将原始位置放入代码中,然后对照这些位置进行检查。单击按钮时关闭屏幕更新,检查控件上的位置是否不同,将其更改回原处,如果需要,将屏幕更新重新打开。

    DP

        21
  •  0
  •   tbaker818    11 年前

    在对这篇文章和相关文章尝试了许多解决方案之后,我发现微软发布的另一个问题的解决方案在以特定方式应用时(至少在我工作的环境中)也能可靠地解决这个特定问题。每当我切换到非本机解决方案时,我都会在本机笔记本电脑和PC机上遇到这些问题。也就是说,按钮加载的大小比正常的大,单击时会变大,这些按钮中的文本和图像会收缩(至少文本的设置保持不变,所以我看不到任何方法可以通过编程或其他方式将其改回。)在我的情况下,这些都不是间歇性的问题。不过,在使用了微软发布的打印预览解决方案后,我遇到了间歇性的问题。 here . 我已经试过了,它似乎起作用了。

    解决方案:对于Excel,关闭应用程序并从中删除msforms.exd文件 C:\Users{UserName}\AppData\Local\Temp\Excel8.0 在要查看按钮的分辨率中。您还可以在本地appdata\temp文件夹中搜索其他.exd文件以查找其他Office应用程序。

    正如我所提到的,这是微软为另一个问题提出的解决方案——在安装了12月14日的更新之后,按钮停止工作。 Here's the link to that article. 在这种情况下,这是一次性修复。在这里,你可能需要在每次改变决定时都这样做。

        22
  •  0
  •   user2573274    11 年前

    对控件进行分组似乎对我有用。我会投赞成票或发表评论,但不会让我这么做。请注意,如果您使用W8显示器缩放,并且具有高分辨率笔记本电脑和旧显示器,则经常会出现此问题。

        23
  •  0
  •   user4995156    11 年前

    我在所有对象(按钮、文本框等)中都发现了这个问题。当我打印/打印预览多个工作表时,除了序列中的第一个工作表以外的所有工作表都已移动或调整了对象的大小。经过多次测试,最简单的解决方案是上下缩放页面并返回到原始设置。

        24
  •  0
  •   ROB    11 年前

    我在ActiveX列表框上也遇到了问题,在其他地方发现了以下问题,目前看来它还可以工作,而且在将电子表格交给其他人时,它似乎也是迄今为止最简单的解决方案:

    虽然列表框有一个integralheight属性,其错误设置的副作用将使该控件不歪斜,而命令按钮具有移动/单元格大小等属性,但其他控件则不那么优美。

    他们还有一些建议: http://www.experts-exchange.com/articles/5315/Dealing-with-unintended-Excel-Active-X-resizing-quirks-VBA-code-simulates-self-correction.html

        25
  •  0
  •   Pang Ajmal PraveeN    10 年前

    我发现问题似乎只发生在打开冻结窗格时,这通常会在大多数应用程序中打开,因为您会将命令按钮等放在一个不会滚动出视图的位置。

    为BE工作的解决方案是对控件进行分组,同时确保组扩展到冻结窗格区域之外。我通过在冻结窗格区域之外添加一个控件来实现这一点,将其添加到组中,同时隐藏该控件,这样您就看不到它。

        26
  •  0
  •   jamheadart    10 年前

    现在使用Excel2013,每次我在Excel运行时扩展显示时(每次我删除扩展时)都会发生这种情况。

    我开始实现的修复方法是使用超链接而不是按钮,其中一个使用其他所有ActiveX控件打开用户窗体。

        27
  •  0
  •   Alexander Farber    10 年前

    将此代码添加到.reg文件中。双击并确认。重新启动Excel。

    Windows Registry Editor Version 5.00
    
    [HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\options]
    "LegacyAnchorResize"=dword:00000001
    
    [HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\Draw]
    "UpdateDeviceInfoForEmf"=dword:00000001
    
        28
  •  0
  •   Jimmy    10 年前

    尝试使用右下方的滑块将缩放设置更改为100%。在两个不同尺寸的显示器上为我修复了它。

        29
  •  0
  •   Scoox    9 年前

    我找到了一个有效的修复方法,并为单个用户解决了这个问题。如果你不想读我的小咆哮,你可以直接跳到解决办法。

    咆哮:

    自从恐龙出现以来,我一直在经历这个愚蠢的问题。与此同时,微软拥有大量资源来发布无数对Office套件的主要更新,但这个问题没有得到解决。这绝对让人恼火。我没有理由在这种基本的东西不起作用的时候升级。微软肯定有人在高分辨率显示器上使用Excel中的ActiveX控件,不是吗?

    我没有在我的台式电脑上遇到过这个问题,也不知道为什么,但在我的表面专业4我的ActiveX控件去香蕉每当我点击它们。

    今天我决定把这件事搞清楚。我搜索了高低,尝试了各种论坛上提出的每一个解决方案(顺便说一下,没有一个有效)。不管控件是否分组、是否锁定、是否安装了修补程序。

    昨天,我在另一个名为Traktor(DJ软件)的应用程序中遇到了另一个问题,在该应用程序中,当显示比例设置为一个并非100%的精确倍数时,控件将跳转。用户发现解决方案是编辑此应用程序的兼容模式。所以我在Excel上也做了同样的事情,而且效果很好!现在,不管显示分辨率和缩放比例如何,我的控件都会保持原样。

    解决方案:

    (确保Excel未运行)

    1. 找到excel.exe(在我的系统上,可以在C:\Program Files\Microsoft Office\Office16\excel.exe中找到)
    2. 将“excel.exe”重命名为“_excel.exe”(基本上将其更改为其他内容)
    3. 右键单击重命名的Excel.exe文件,然后转到“属性”>“兼容性”选项卡>“设置”部分。
    4. 设置覆盖高dpi缩放行为=启用,缩放由执行= 应用
    5. 单击确定
    6. 重命名为“_excel.exe”返回到“excel.exe”

    现在Excel将以其本机分辨率运行,而ActiveX控件不会出错。唯一的缺点是Excel不会对屏幕缩放做出响应,所以看起来可能比预期的要小一些。在我的表面上,专业4是可以接受的。

    笔记:

    1) Excel 2016需要步骤2和6,因为Excel.exe的“属性”对话框不提供“兼容性”选项卡。重命名后,选项卡变为可用。

    2) 此解决方案仅在一个用户基础上工作。也就是说,如果将包含ActiveX控件的Excel文件发送给同事,除非更改兼容模式设置,否则ActiveX控件将无法在其系统上正确显示。

    3) 应用此黑客程序后,以前损坏的Excel文件在打开时会自行修复,所有控件都会恢复其原始预期尺寸。

    请测试和评论,我希望这能帮助某人,干杯!

        30
  •  0
  •   R Neame    9 年前

    我有时也有同样的问题。在我的例子中,我可以在一个文件上100%地复制它,但是在一个几乎相同的文件上它是不一致的。我还发现大小错误不是永久性的——我可以保存并重新打开文件来恢复按钮的外观。我还可以创建一个新窗口,然后丢弃损坏的窗口。我使用单个监视器配置。

    对我来说,当我访问工作表的 hpagebreaks(断纸) 收集。我可以通过临时更改窗口视图来避免此问题,如下所示:

    ActiveWindow.View = xlPageBreakPreview
      ' do pagination stuff using HPageBreaks
    ActiveWindow.View = xlNormalView
    
    推荐文章