2017-02-08 6 views
1

私は多くのVBAとカスタムアドインで動作するワークブックを用意しています。これは主に、表面プロ3S及び4Sに配備されているサーフェイスプロ4をクリックすると、Excelシートに埋め込まれたボタンがピクセル化されました。

Buttons before click

:ワークブックは、レポート「アプリ」の動作を制御するフロントシート上のボタンのシリーズを持っています。ユーザーの1人は、ボタンをクリックするたびにピクセル化され(以下の図を参照)、もう読むことができないことを報告しています。私はこれを他のユニットで見たことがなく、このユーザがSurfaceスクリーン上にあるものを複製する外部ディスプレイを持っていることが関係しているかもしれません。効果は、両方の画面で発生:

Pixellated buttons

オフィスバージョンのExcel 2016 MSO 32ビットです。

誰もがこれを見て、なぜそれが起こるか知っていますか?

答えて

0

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

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 
関連する問題