Ich habe den folgenden Code geschrieben, um durch meine Arbeitsblätter als eine Art Diashow zu durchlaufen, um in einer Verkaufsabteilung zu verwenden. Der Code funktioniert perfekt, wenn ich im Debug-Modus durchlaufe, aber wenn ich das Makro ausführe, funktioniert es nur zeitweise und kommt gelegentlich zur Auswahl der Arbeitsblätter, ohne die Bildschirmaktualisierungs-Anwendungsfunktion reaktiviert zu haben.Intermittent VBA Makro Fehler
Hier ist der Code, den ich bisher erstellt haben:
Sub Runshow()
Dim ws As Worksheet
On Error GoTo exit_
Application.EnableCancelKey = xlErrorHandler
For Each ws In ThisWorkbook.Worksheets
ws.Protect
Next
Application.DisplayFullScreen = True
Application.DisplayFormulaBar = False
ActiveWindow.DisplayWorkbookTabs = False
ActiveWindow.DisplayHeadings = False
ActiveWindow.DisplayGridlines = False
ActiveWindow.DisplayHorizontalScrollBar = False
ActiveWindow.DisplayVerticalScrollBar = False
Application.Calculation = xlManual
Let y = 0
Do Until y = 80
Application.ScreenUpdating = False
Workbooks.Open("c:\users\admin\downloads\crm.xlsx").Activate
Application.Calculate
ActiveWorkbook.Close savechanges = False
Application.ScreenUpdating = True
ThisWorkbook.Activate
Let x = 0
Do Until x = 23
For Each ws In ActiveWorkbook.Worksheets
ws.Select
Application.Wait (Now + TimeValue("00:00:10"))
x = x + 1
Next
Loop
y = y + 1
Loop
exit_:
For Each ws In ThisWorkbook.Worksheets
ws.Unprotect
Next
Application.DisplayFullScreen = False
Application.DisplayFormulaBar = True
ActiveWindow.DisplayWorkbookTabs = True
ActiveWindow.DisplayGridlines = True
ActiveWindow.DisplayHorizontalScrollBar = True
ActiveWindow.DisplayVerticalScrollBar = True
Application.Calculation = xlAutomatic
End Sub
Welchen Fehler bekommen Sie? Auch Ihre Schleife für 'Do bis x = 23 'scheint nichts zu tun? Sie durchlaufen jede Arbeitsmappe und wiederholen diese Schleife dann 23-mal, verwenden aber nie x für irgendetwas. Was ist auch der Grund dafür, dass y = y + 1 zweimal in der gleichen Schleife ist? Kann man nicht einmal "y = y + 2" benutzen? Und ich sehe nicht, wofür die "y" -Schleife ist. –
Ich wusste nicht, dass Sie 'Let' in VBA verwenden können. Danke für deine Frage, lehrte mich etwas! – BruceWayne
Warum nicht Powerpoint verwenden? – findwindow