2017-09-21 8 views
0

私がここで達成しようとしているのは、3つのシートをすべて1分ごとに切り替える3つのダッシュボードがあります。私は以下のコードに悩まされています。どんな助けもありがとう。VBAを使用して定期的にシートを切り替える

は私が
1. First_sheet、2 Second_Sheetを切り替えるには3枚のシートを持っている、3。これは、複数のif-Sを選択した場合や再帰を避け、それを行うには良い方法です

Sub Swap_Sheets() 

    Dim Sheets As Workbook 
    Dim dTime As Date 

    dTime = Now + TimeValue("00:00:60") 

    Application.OnTime dTime, "Swap_Sheets" 

    If ActiveSheet.Name = "First_Sheet" Then 
     Sheets("Second_Sheet").Activate 
    Else 
     Sheets("Third_Sheet").Activate 
    Else 
     Sheets("First_Sheet").Activate 
    End If 

    If Sheets("Second_sheet").CheckBox1.Value = False Then 
     Application.OnTime dTime, "Swap_Sheets", , False 
    End If 
End Sub 
+2

あなたの問題は何ですか?コードはあなたが望むことをしませんか?それはエラーをスローするのですか?具体的にしてください – RealCheeseLord

+3

あなたはそこに2つの 'Else'ステートメントを持っています! –

答えて

0

をThird_Sheet :

Option Explicit 
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

Public Sub SwapSheets() 

    Dim dTime  As Date 
    Dim i   As Long: i = 1 

    While i <= ThisWorkbook.Worksheets.Count 
     If ActiveSheet.Name = Worksheets(Worksheets.Count).Name Then 
      Worksheets(1).Activate 
     Else 
      Worksheets(ActiveSheet.index + 1).Activate 
     End If 
     i = i + 1 
     Sleep (10000) '10 seconds 
    Wend 

End Sub 

考えられるのは、すべてのシートにインデックスがあり、アクティブなインデックスのインデックスを増やすだけでよいということです。最後のシートがアクティブな場合は、最初から開始します。 Sleepはパラメータとしてミリ秒かかり、60秒間は60.000です。

プラス - あなたのコードにはDim Sheets As Workbookがあります。これはおそらくWorksheetを意味します(私は推測しているに過ぎません)。


あなたはわずか3つのワークシートをアクティブにしたい場合は、これはおそらくそれを行うための最も簡単な方法です:

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

Public Sub SwapSheets() 

    Dim sheetNames() As Variant 
    Dim i    As Long 

    sheetNames = Array("Sheet1Name", "Sheet2Name", "Sheet3Name") 

    For i = LBound(sheetNames) To UBound(sheetNames) 
     Sheets(sheetNames(i)).Activate 
     Sleep (10000) '10 seconds 
    Next i 

End Sub 
+0

こんにちはVityata、 応答が遅れて申し訳ありませんが、私は上記のコードを試しましたが、シートは切り替えられていません。基本的に私が達成しようとしているのは、3つのダッシュボードを同じExcelブックの3つの異なるシート上で実行し、最初の3枚だけを切り替える5〜6枚以上のシートがあることです。誰が名前は1. First_sheet、2. Second_Sheet、3. Third_Sheet。 よろしく、 RKP – RKP

+0

こんにちは、チーム誰かが私にこれを手伝ってください! – RKP

+0

チームが報告しています、タスクは完了しました@RKP :) – Vityata

関連する問題