我想将模板表复制到其左侧,以便由报表生成器填充。一切正常。
然而,当涉及到纸张复印行(如下所示)时,它们是一个闪光,因为excel出现然后消失 - 虽然偶尔我会留下一个蓝色的,部分填充的excel窗口。
我已将Application.ScreenUpdating
设置为false,.Visible
也设置为false,我每次都会重置它们以最大限度地减少中断。这个闪光灯真的很烦人。有没有阻止它?
' create new sheet from template sheet
shtDeliveryVariance.Copy Before:=shtDeliveryVariance
Set shtVariance = Sheets(shtDeliveryVariance.Index - 1)
shtVariance.Name = "Delivery Variance " & Format(nSheetNumber, "000")
' minimise the flashes
Application.Interactive = False
Application.ScreenUpdating = False
Application.Visible = False
更新:如果我使用Set shtVariance = Sheets.Add
我没有获得闪存,但我丢失了所有漂亮的格式。
答案 0 :(得分:1)
也许我误解了,但你不应该在复制之前将application.screenupdating设置为false吗?
<强>更新强> 仍然不完全清楚导致问题的原因,但屏幕闪烁可能是由于正在激活的复制工作表。我确实得到了一些屏幕闪烁,其中包含一个包含大图像的工作表,使用像你这样的代码。 您可以尝试通过设置Application.EnableEvents = False来禁用激活 也许是这样的:
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim active As Worksheet
Set active = ThisWorkbook.ActiveSheet 'or somesuch
'your code here
active.Activate
Application.EnableEvents = True
Application.ScreenUpdating = true
答案 1 :(得分:1)
运行代码时,我只能获得一个“闪存”。
这是此行中的代码运行时
Application.Visible = False
这是因为隐藏了Excel,桌面会暂时显示,然后再次显示Excel。我会删除那行代码。
我还会检查在重新开启屏幕更新之前,再次选择调用代码时处于活动状态的工作表。
Sub Test_Flash()
Dim shtDeliveryVariance As Worksheet
Dim i As Integer
Application.Interactive = False
Application.ScreenUpdating = False
Set shtDeliveryVariance = ActiveWorkbook.Worksheets("Sheet1")
nSheetNumber = 1
For i = 1 To 100
shtDeliveryVariance.Copy Before:=shtDeliveryVariance
Set shtVariance = Sheets(shtDeliveryVariance.Index - 1)
shtVariance.Name = "Delivery Variance " & Format(nSheetNumber, "000")
nSheetNumber = nSheetNumber + i
Next i
ActiveWorkbook.Worksheets("Sheet1").Select
Application.Interactive = True
Application.ScreenUpdating = True
End Sub