私はワークシートを通って営業部門で使用する一種のスライドショーとして循環するために以下のコードを書いています。このコードは、デバッグモードでステップスルーしたときに完全に機能しますが、マクロを実行すると間欠的にしか動作せず、アプリケーション機能を更新する画面を再アクティブ化せずにワークシートを選択することがあります。ここで断続的なVBAマクロエラー
は、私がこれまでに作成したコードです:
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
どのようなエラーが表示されますか?また、 'Do Until x = 23'のループは何もしていないようですね。あなたは各ワークブックをループして、このループを23回繰り返すが、何もxを使うことはない。また、同じループで 'y = y + 1'の理由が2回あると、' y = y + 2'を一度使うことはできませんか?そして、私は 'y'ループが何であるかは分かりません。 –
私はあなたがVBAで 'Let'を使うことができるとは気づきませんでした。あなたの質問をありがとう、私に何か教えて! – BruceWayne
パワーポイントを使ってみませんか? – findwindow