[英]Excel Flashes When Running Macro
運行以下宏時,整個電子表格都會閃爍,如果有人告訴我如何避免這種情況發生,我將不勝感激。
宏正在檢查D列是否變灰,是否使D變色並使F列變灰,反之亦然。
它通過復制我用C列中設置的正確顏色設置的3個單元格的格式來更改顏色。
Worksheets("SHELLY").Range("D4:F19").ClearContents
If Worksheets("SHELLY").Range("D3:D19").Interior.ColorIndex = 15 Then
Range("C41").Select
Selection.Copy
Range("F3:F19").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("C42").Select
Selection.Copy
Range("D3:D19").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Else
Range("C41").Select
Selection.Copy
Range("D3:D19").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("C43").Select
Selection.Copy
Range("F3:F19").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End If
嘗試放入:
在代碼之前, Application.ScreenUpdating = False
在Application.ScreenUpdating = True
。
據我所知,切換此屬性會告訴Excel不要重繪/更新屏幕。
這可能會提高您的代碼速度。 另外,最好避免使用激活/選擇,但這不是您的問題。
正如Scott所說,您必須避免使用Select / Selection / Activate / ActiveXXX模式,並使用完全限定的顯式范圍引用
此外,您可以重構代碼並避免代碼重復,如下所示:
Dim sourceCell1 As Range, targetRng1 As Range, sourceCell2 As Range, targetRng2 As Range
With Worksheets("SHELLY")
If .Range("D3:D19").Interior.ColorIndex = 15 Then
Set sourceCell1 = .Range("C41")
Set targetRng1 = .Range("F3:F19")
Set sourceCell2 = .Range("C42")
Set targetRng2 = .Range("D3:D19")
Else
Set sourceCell1 = .Range("C41")
Set targetRng1 = .Range("D3:F19")
Set sourceCell2 = .Range("C43")
Set targetRng2 = .Range("F3:F19")
End If
End With
sourceCell1.Copy
targetRng1.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
sourceCell2.Copy
targetRng2.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
並且,如果您想完全消除任何屏幕“活動”,則可以將以上代碼包含在以下代碼中:
Application.ScreenUpdating = False
....(code above)
Application.ScreenUpdating = True
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.