私は最終的にすべてのボタンを長方形に置き換えることでこの問題を解決しました。これらのマクロには依然としてマクロが割り当てられていて、ユーザーがカーソルを置いたときにカーソルを手に合わせることさえできます。
pixellationの問題は、ワークシートの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