embedded在Excel表单中的button在点击Surface Pro 4后变为像素化

我有一个工作簿,可以与许多VBA和一个自定义插件一起为客户创build报告。 该工作簿在前面板上有一系列button,用于控制报告“app”的操作:

点击之前的按钮

这主要是在Surface Pro 3s和4s上部署的。 其中一位用户报告说,他们每次点击一个button,就会变成像素化(如下图所示),不能再被读取。 我没有在其他单位看到这个,并且这个用户有一个外部显示器可能是相关的,这个外部显示器重复他的表面屏幕上的内容。 效果发生在两个屏幕上:

Pixellated按钮

Office版本是Excel 2016 MSO 32位。

有没有人看过这个,有谁知道为什么会发生?

我最终通过用Rectangle Shapesreplace所有的button来解决这个问题。 这些仍然可以分配macros,甚至当用户hover在他们身上时,将光标移动到一只手。

我认为像素化问题是工作表中embedded的ActiveX控件特有的问题,如果可能,可以通过使用其他工具来避免。 我不认为有任何其他的方式!

为了将button重新实现为形状,我编写了一个ShapeButtons模块(在VBA中),它提供了一些有用的function来显示/隐藏button和获取/设置文本。 我们工作表中的所有button位于名为ControlSheet的页面上。 请原谅我的高度防御error handling:

 Public Sub SetShapeBtnText(name As String, newText As String) On Error GoTo errorHandler Dim btn As Shape Set btn = GetShapeBtn(name) btn.TextFrame2.TextRange.text = newText Exit Sub errorHandler: WriteDebugError ("SetShapeBtnText Exception for " & name & " with " & newText) End Sub Public Sub ShowShapeBtn(name As String) On Error GoTo errorHandler ControlSheet.Shapes(name).Visible = True Exit Sub errorHandler: WriteDebugError ("ShowShapeBtn Exception for " & name) End Sub Public Sub HideShapeBtn(name As String) On Error GoTo errorHandler ControlSheet.Shapes(name).Visible = False Exit Sub errorHandler: WriteDebugError ("HideShapeBtn Exception for " & name) End Sub Public Function ShapeBtnIsVisible(name As String) As Boolean On Error GoTo errorHandler ShapeBtnIsVisible = ControlSheet.Shapes(name).Visible Exit Function errorHandler: WriteDebugError ("ShapeBtnIsVisible Exception for " & name) End Function