[英]Excel VBA Print Freezes
我已經嘗試了很多解決方案,並在網上瀏覽了多個小時。 也許你們其中之一可以提供幫助。
我有一個宏,可以選擇名稱中帶有特定字符串的所有工作表,然后進行打印。 如果工作表太多,它將凍結,並且您將無法中斷要調試的宏,而Ctrl + Alt + Del是唯一的出路。 每次也會凍結在不同的位置...
我的原始代碼:
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim x As Integer
For x = 1 To Worksheets.count
If VBA.InStr(Worksheets(x).Name, "Lateral Assessment") > 0 Then
With Worksheets(x).PageSetup
.Orientation = xlPortrait
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
Worksheets(x).PrintOut
End If
Next x
Application.ScreenUpdating = True
Application.EnableEvents = True
我在其他論壇線程中嘗試了以下方法:
我還曾在一點上添加了一個進度條,我在許多較大的流程中都使用了它,您可以看到進度條一直在計數,然后凍結在不一致的工作表編號上。 另外,請注意,即使我從VBA代碼窗口一次運行一次迭代,也會出現該問題,因此,它似乎與處理時間無關(盡管不能確定該時間)。
我當前的代碼:
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim x As Long, iTotal As Long, sSheets() As String
iTotal = -1
For x = 1 To Worksheets.count
If VBA.InStr(Worksheets(x).Name, "Lateral Assessment") > 0 Then
With Worksheets(x).PageSetup
.Orientation = xlPortrait
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
iTotal = iTotal + 1
ReDim Preserve sSheets(iTotal)
sSheets(iTotal) = Worksheets(x).Name
End If
Next x
If iTotal <> -1 Then
Sheets(sSheets).PrintOut Copies:=1, Collate:=True
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
知道為什么會這樣,還有我沒有嘗試過的可能解決方案嗎?
確保ScreenUpdating已打開。 VBA代碼為:Application.ScreenUpdating = True
如果掛起,則可以正常工作。 調整打印預覽窗口的大小(抓住拐角或邊緣,然后再變小再變大)。 這似乎導致Excel進入ScreenUpdating並給您控制權。 為了以防萬一,因此您始終可以訪問窗口的邊緣,因此可以在printpreview之前自動調整Excel的大小,方法是:
Sub WindowState_850x1400()
With Application
.WindowState = xlNormal
.Top = 1
.Left = 1
.Height = 850
.Width = 1400
End With
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.