Sub between_sheets_only()
'For i = 1 To Worksheets.Count
' ...
' ...
' ...
'Next で
'左にあるシートから順番に、すべてのシートに対して処理をできます。
'Sheet3 と Sheet6 の間にあるシートのみ処理をする
Dim i
Dim change
For i = 1 To Worksheets.Count
'条件判定を行う
If Worksheets(i).Name = "Sheet3" Then
change = True
ElseIf Worksheets(i).Name = "Sheet6" Then
change = False
End If
If change Then
'条件に一致する場合のみ処理
Worksheets(i).Tab.Color = vbRed
End If
Next
End Sub
For Each 構文でも似たようなことができそうな気配はありますが、この場合は For Next 構文のほうが良いです。 なぜなら、For Each 構文は、処理の順序が保証されていない(*)からです。
84nomuraさんの投稿
(投稿ID: 5436)
小川 慶一さんのコメント
(コメントID: 8037)
こんな感じ↓ですね。
For Each 構文でも似たようなことができそうな気配はありますが、この場合は For Next 構文のほうが良いです。
なぜなら、For Each 構文は、処理の順序が保証されていない(*)からです。
(*) 仕様上は、「左のシートから順番に処理される」とは限らないということになっています。(実装的にはそうなっていますが)
84nomuraさんのコメント
(コメントID: 8039)
今更ですが、Worksheets(1).select というのは、1番目のシートを選択するという意味でした。
(ちょっとどういう理屈でそうなってるのかは忘れてしまいましたが・・)
小川 慶一さんのコメント
(コメントID: 8040)
小川 慶一さんのコメント
(コメントID: 8041)
https://forum.pc5bai.com/lesson/page/185/