2017-06-02 10 views
0

は、それがクリックされていますときに私は絵(のActiveX)の上に図形を追加するマクロを書いている:防ぎ画面のちらつき(具体的なケース)

Private Sub clickpic_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single) 

ClickShape CLng(x), CLng(y) 

End Sub 

Public addedShapes() As Shape 
Public sIndex As Integer 

Sub ClickShape(x As Long, y As Long) 

Dim shp As Shape 

Application.ScreenUpdating = False 

Set shp = ActiveSheet.Shapes.AddShape(msoShapeMathMultiply, x + ActiveSheet.Shapes("clickpic").Left - 10, _ 
y + ActiveSheet.Shapes("clickpic").Top - 10, 20, 20) 

With shp.Fill 

    .ForeColor.RGB = RGB(255, 0, 0) 
    .backColor.RGB = RGB(255, 0, 0) 

End With 

shp.Line.Visible = False 

shp.Name = CStr(shp.Top & shp.Left) 

ReDim Preserve addedShapes(sIndex) 
sIndex = sIndex + 1 

Set addedShapes(UBound(addedShapes)) = shp 

ActiveSheet.Shapes("clickpic").Visible = False 
ActiveSheet.Shapes("clickpic").Visible = True 

Application.ScreenUpdating = True 

End Sub 

私が見つけました

ActiveSheet.Shapes("clickpic").Visible = False 
ActiveSheet.Shapes("clickpic").Visible = True 

しかし、これはまだリフレッシュするための画面を引き起こし/ FLIをオフに更新画面を回すことにもかかわらず:the only way to display the shape immediatelyは絵を有効または無効にすることですcker。どのように私はこれを防ぐことができますか?

答えて

0

Visible = True/Falseのいずれかを読むと、シートの再計算がトリガされ、フリッカが発生することがあります。コード中に計算を手動に設定しようとする価値があります。

+0

ありがとうございますが動作しません – Absinthe

関連する問題