2017-03-14 9 views
3

ブック内のすべてのシートをループし、シートの色を下の順に変更するExcel VBAが必要です。シートがなくなるまで3,5,6,12,3,5,6,12,3,5,6,12回繰り返しパターンを繰り返す。 以下のコードはランダムな色でそれらを変更する作業ですが、私は上記のパターンが必要です。Excel VBAはすべてのシートをループしてシートの色を変更します

Sub sbColorAllSheetTab() 
'Declaration 
Dim iCntr, sht 
'This will hold the colorIndex number 
iCntr = 2 
'looping throgh the all the sheets of the workbook 
For Each sht In ThisWorkbook.Worksheets 
iCntr = iCntr + 1 
'Applying the colors to Sheet tabs 
sht.Tab.ColorIndex = iCntr 
Next 
End Sub 

助けがあれば助かります。タイ!

答えて

5

はこれを試してみてください:

Sub sbColorAllSheetTab() 

    Dim iCntr, sht, arrColors, numColors 

    arrColors = Array(3, 5, 6, 12) '<< array of color indexes 

    iCntr = 0 
    numColors = UBound(arrColors) + 1 '<< how many colors? 

    For Each sht In ThisWorkbook.Worksheets 
     sht.Tab.ColorIndex = arrColors((iCntr Mod 4)) '<< use Mod to cycle color 
     iCntr = iCntr + 1 
    Next 

End Sub 
+0

oopsツイン思考! –

+0

ここに同じ - 数秒間隔! –

+0

こんにちは、 すみません、皆様、ありがとうございます!最初の人は完璧に働いた! –

2

は、私はあなたにこの程度のことを何をすべきか知ってみましょう

Sub sbColorAllSheetTab() 
    Dim iCntr As Long, sht As Worksheet, arr 
    arr = Array(3, 5, 6, 12, ...) ' any sequence 

    For Each sht In ThisWorkbook.Worksheets 
     sht.Tab.ColorIndex = arr(iCntr) 
     iCntr = (iCntr + 1) Mod (UBound(arr) + 1) 
    Next 
End Sub 
+0

勇敢なdownvoterのおかげで、あなたは人生を得なければなりません;) –

+0

upvote! –

+0

@TimWilliamsどうもありがとう、おかげです。私は決して疑いがないことを確かめてください、私は勇敢な男をほとんど "知っています"。私は間違いを犯すと落としてもらえませんが、何もないときは... –

1

それを介してアレイとインデックスを使用してください。

Sub sbColorAllSheetTab() 
Dim shtMod As Byte 
'looping throgh the all the sheets of the workbook 
For Each sht In ThisWorkbook.Worksheets 
    shtMod = sht.Index Mod 4 
    Select Case shtMod 
     Case 1 
      sht.Tab.ColorIndex = 3 
     Case 2 
      sht.Tab.ColorIndex = 5 
     Case 3 
      sht.Tab.ColorIndex = 6 
     Case 0 
      sht.Tab.ColorIndex = 12 
    End Select 
    Next 
End Sub 
+1

コメントがない2 downvotesがあります。なぜ、そしてこのケースでは、ダウンボントが保証されない理由を与えるのは礼儀です。これはOPの質問に働きかけます。たとえそれが「最良の」答えではないとしても、それはまだ解決策です。 –

関連する問題