优化最佳外观选项打破了用户表单
Optimise For Best Appearance Option Breaks User Forms
我遇到以下问题:我的客户端更新了 Excel 版本,所有用户表单似乎都已损坏。 (此处描述:Excel UserForm displays at the wrong size)
较新的 Excel 版本中有一个特殊的默认设置“为最佳外观优化”(使用多个显示器时)会导致该问题。当我切换到“优化兼容性”选项时,问题就消失了。
问题:有人知道如何以编程方式更改此设置(在 VBA 代码中)吗?
我尝试录制宏并更改设置,但没有成功。结果程序是空的。
我没能找到解决方法。显然,当“优化最佳外观”选项处于活动状态并且多个显示器连接到设备时,excel 无法正确构建按钮、对象等。告诉每个用户不要使用多个显示器或手动关闭此选项是不是一个选项。
我现在正在以不使用任何对象的方式更改应用程序。很烂,但没有别的办法。
那么您可以尝试更改注册表设置:
HKEY_CURRENT_USER\Software\Microsoft\Office.0\Excel\Options\RenderForMonitorDpi
做类似 (Source) 的事情:
Public Function RegWrite(ByVal Path As String, _
ByVal Value As String, _
Optional ByVal Typ As String = "REG_SZ") As Boolean
Dim ws As Object
On Error Goto ErrHandler
Set ws = CreateObject("WScript.Shell")
ws.RegWrite Path, Value, Typ
RegWrite = True
Exit Function
ErrHandler:
RegWrite = False
End Function
但是它对我不起作用。它会更改注册表值,但在重新启动后 excel 不会更改设置并将注册表值更改回旧值。
我遇到以下问题:我的客户端更新了 Excel 版本,所有用户表单似乎都已损坏。 (此处描述:Excel UserForm displays at the wrong size)
较新的 Excel 版本中有一个特殊的默认设置“为最佳外观优化”(使用多个显示器时)会导致该问题。当我切换到“优化兼容性”选项时,问题就消失了。
问题:有人知道如何以编程方式更改此设置(在 VBA 代码中)吗?
我尝试录制宏并更改设置,但没有成功。结果程序是空的。
我没能找到解决方法。显然,当“优化最佳外观”选项处于活动状态并且多个显示器连接到设备时,excel 无法正确构建按钮、对象等。告诉每个用户不要使用多个显示器或手动关闭此选项是不是一个选项。
我现在正在以不使用任何对象的方式更改应用程序。很烂,但没有别的办法。
那么您可以尝试更改注册表设置:
HKEY_CURRENT_USER\Software\Microsoft\Office.0\Excel\Options\RenderForMonitorDpi
做类似 (Source) 的事情:
Public Function RegWrite(ByVal Path As String, _
ByVal Value As String, _
Optional ByVal Typ As String = "REG_SZ") As Boolean
Dim ws As Object
On Error Goto ErrHandler
Set ws = CreateObject("WScript.Shell")
ws.RegWrite Path, Value, Typ
RegWrite = True
Exit Function
ErrHandler:
RegWrite = False
End Function
但是它对我不起作用。它会更改注册表值,但在重新启动后 excel 不会更改设置并将注册表值更改回旧值。