Excel 工作表中嵌入的按钮在单击 Surface Pro 4 后变得像素化

问题描述 投票:0回答:2

我有一个工作簿,可以使用大量 VBA 和一个自定义插件来为客户创建报告。工作簿的正面有一系列按钮,它们控制报告“应用程序”的操作:

Buttons before click

这主要部署在 Surface Pro 3s 和 4s 上。一位用户报告说,每当他们单击按钮时,该按钮就会变得像素化(如下图所示)并且无法再阅读。我还没有在其他设备上看到过这种情况,这可能与该用户有一个外部显示器有关,该显示器复制了他的 Surface 屏幕上的内容。效果发生在两个屏幕上:

Pixellated buttons

Office版本是Excel 2016 MSO 32位。

有人见过这个吗?有人知道为什么会发生吗?

vba excel vsto surface-pro
2个回答
0
投票

我最终通过用矩形替换所有按钮解决了这个问题。这些仍然可以分配宏,甚至当用户将鼠标悬停在它们上方时将光标变成手形。

我认为像素化问题是工作表上嵌入的 ActiveX 控件所特有的,如果可能的话可以通过使用其他工具来避免。我想没有其他办法了!

为了将按钮重新实现为形状,我编写了一个 ShapeButtons 模块(在 VBA 端),其中包含一些用于显示/隐藏按钮和获取/设置文本的有用函数。我们工作表中的所有按钮都位于名为

ControlSheet
的页面上。请原谅我高度防御性的错误处理:

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

0
投票

虽然我很欣赏这种解决方法,但必须实现这个问题的“答案”是完全荒谬的。 Excel 应该对此有更好的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.