复印表没有闪烁

时间:2009-09-08 15:37:02

标签: excel vba excel-vba

我想将模板表复制到其左侧,以便由报表生成器填充。一切正常。

然而,当涉及到纸张复印行(如下所示)时,它们是一个闪光,因为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我没有获得闪存,但我丢失了所有漂亮的格式。

2 个答案:

答案 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