Excel:不可思议的缩放控件

67

偶尔,我会遇到一个电子表格,其中包含一些神奇的按钮或下拉框,随着时间的推移它们变得越来越大或越来越小。

代码中没有任何指示。

还有其他人经历过这种“乐趣”吗?


我曾经看到这种行为,尤其是在单选按钮缩小时,但从未理解为什么会发生,为什么只有有时会发生,或者如何修复它。只是假定它是一个错误。 - Lunatik
1
潜在问题与以下其他问题相同:http://stackoverflow.com/questions/9518002/excel-vba-combobox-dropdown-button-size-changed-itself;https://dev59.com/c2kw5IYBdhLWcg3w4eiS - matt_black
5
+1,但是,这不应该放在Super User SE上吗? - JMCF125
1
在使用 Excel 2016 几个月后,我遇到了这个问题,并在此线程中找到了解决方法。回答中描述的各种情况似乎都不适用于我的情况。但最终起作用的是在按钮代码开头插入一行代码 "button".width = "button".width。 - Ron Rosenfeld
4
这是由于缩放级别计算错误造成的。如果您不使用缩放(100%),则不会发生这种情况。如果使用 VBA 改变任何元素的大小,建议将缩放设置为 100%,调整大小,然后再设置回之前的缩放级别。非常有效。 - cyberponk
显示剩余2条评论
34个回答

1
我在Excel 2010中经常遇到这个问题(这总是让我回到这个主题),虽然我没有找到100%的解决方法,但我相信我有一些信息可以帮助其他人。我费力地尝试着按下按钮,发现每个对象的不同事件会导致不同的问题。例如,
- 按钮A - 鼠标按下事件会使按钮的大小缩小 - 按钮B - 鼠标移动事件会使文本放大(但只有在单击按钮后才会出现。即,我单击按钮,代码执行,将鼠标悬停在按钮上,然后当我移动鼠标时,文本就会放大) - 文本输入框A - 鼠标释放事件会使文本放大 - 文本输入框B - 失去焦点事件会使文本放大
对我有效的唯一解决方案是编写代码来重置每个对象事件引起的随机调整的大小/文本。像这样... 其中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。
是的,这很耗时和繁琐,因为必须针对每个对象进行操作,但这是我唯一有效的解决方法(似乎比等待Microsoft修复问题更快!)。希望能帮助其他人。
我希望其他人也会发现这有用。

1

很奇怪,当查询宽度和高度属性时(无论是在代码中还是使用属性表),它们不会缩小,但显然它们确实会改变。

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

以下代码对我有效(并在表格上产生有趣的视觉效果:您单击后,它会收缩,屏幕闪烁,然后再扩展回来)。

我的解决方案(在复选框的单击事件中):

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

1

虽然这是一个旧的帖子,但我也遇到了同样的问题,并通过首先将出现问题的选项按钮分组,然后在Auto_Open中简单地设置(重置)此组的大小来解决它:

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

1
我曾多次遇到此问题,解决方法如下:
  1. 在 C:\ 驱动器中搜索扩展名为“.exd”的文件
  2. 删除这些文件(可以这样做)
  3. 实现代码,在每次打开工作表时重新调整 ActiveX 对象的大小
我发现这个问题是由于我们将笔记本电脑连接到投影仪并保存文件所致。每当问题出现时,我只需重复步骤1和2,我的ActiveX对象就能正常运行了。

1

请使用以下方法进行检查:

格式 | 属性 | 对象定位

选择除“随单元格移动和调整大小”以外的任何选项。


4
尝试过了,但不幸的是它并没有起作用 - 控制仍然自作主张! - Nick
我要承认 - “尝试”的那个人没有正确保存它。这确实有效! - Nick

1

[EXCEL PROFESSIONAL PLUS 2016, 32BITS, VERSION 1802, BUILD 9029.2167]

我曾遇到同样的问题,但我成功地通过自定义 Windows 10 (64位)显示缩放来解决。这非常简单,只适用于单个用户。按照以下说明操作,您就可以将所有表单控件、工作表形状、图形和 ActiveX 控件恢复到原始大小,无需编程或进行高级技巧/魔法/黑客。如果提供的链接失效,请重复以下步骤:

  1. 要在 Windows 10 中设置自定义显示缩放,请执行以下操作:

    打开“设置”。

  2. 转到“设置” - “显示”。
  3. 在左侧,“比例和布局”下点击“自定义缩放”链接。
  4. 将打开“自定义布局”页面。指定新的缩放百分比值。【使用100】!...然后就搞定了。关闭并重新打开 Excel。

这是一篇旧文章,但我希望它能帮助任何正在处理这个令人烦恼和压力的 Excel 问题的人。

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


虽然这是一篇旧帖子,但我很欣赏这种新的看法。当当前的工作环境摆脱Windows 7时,我会很高兴尝试一下!我从未在家里使用过任何收缩软件,但稍后会检查一下设置。谢谢! - Nick

1

我遇到了类似的问题,但是我发现通过放大和缩小页面可以很快地解决。因此,我在我的宏的底部添加了以下代码作为快速修复。虽然我不是Excel专家,但它似乎还可以正常工作。更改底部的数字应反映您首选的缩放比例。

ActiveWindow.Zoom = 100
ActiveWindow.Zoom = 90

0

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

对于我来说,当我访问工作表的HPageBreaks集合时,按钮会重新调整大小。我通过以下临时更改窗口视图来避免这个问题:

ActiveWindow.View = xlPageBreakPreview
  ' do pagination stuff using HPageBreaks
ActiveWindow.View = xlNormalView

0

将此代码添加到.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

这似乎是一个可行的解决方案,但是没有任何解释或参考资料,我认为它不太实用,也不值得点赞。例如,14.0 部分是否仅适用于特定版本的 Excel?在我的 Windows 10 笔记本电脑上,我的 Excel 2007 "(12.0.6771.5000) SP3 MSO (12.0.6772.5000)" 中没有那个 14.0(无论这两个不同的数字意味着什么)。不过,我确实有 12.016.0,所以我尝试了您的解决方案,只需将14 更换为 1216,但在任何情况下都不起作用(在启动 Excel 之前,我使用 regedit 验证了预期位置是否创建了键)。 - SantiBailors
这个问题的来源似乎是此 MS 支持页面。即使考虑到 Excel 2007 的不同注册表键位置,它也不能解决我的问题,但是这篇文章只正式适用于 Excel 2003 和 2010,因此还算公平。然而,它将症状描述为“当您改变显示分辨率时,Microsoft Office Excel 2003 或 Microsoft Excel 2010 正在运行时,单击控件会导致控件大小改变”,而实际上无需这样做就会发生此问题。 - SantiBailors

0

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

我的解决方案是对控件进行分组,但还要确保该组超出了冻结窗格区域。我通过在冻结窗格区域外添加一个控件来实现这一点,将其添加到组中,但也隐藏该控件,以便您看不到它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接