Bir çalışma kitabındaki tüm çalışma sayfalarını nasıl değiştireceğimi ve bir 'uç bayrak' çalışma sayfasına eriştikten sonra nasıl çıkacağımı biliyorum:Bir çalışma sayfası alt kümesini nasıl çözebilirim?
For Each ThisWorkSheet In Worksheets
If ThisWorkSheet.Name = "FlagEnd" Then Exit For
MsgBox "This worksheet name is: " & ThisWorkSheet.Name
Next
Ancak, bir başlangıç bayrağına başlamak için döngü alamıyorum 'çalışma sayfası (veya başlangıç bayrağı çalışma sayfasından hemen sonra çalışma sayfasında daha iyi. Örneğin, işaretlenmiş başlangıç / bitiş çalışma sayfaları, diğer çalışma sayfalarının ortasındadır, yani başlangıç veya bitiş geçişi uygulanabilir değildir.
"FlagStart" sayfasından önce yüzlerce çalışma sayfası olabilir, bu yüzden gerçekten sağdaki sayfadan başlamalıyım.
Deneme:
Set ThisWorkSheet = Sheets("FlagNew")
ve
For Each Sheets("FlagNew") In Worksheets
Fikirler?
Çözüm: Mathias çok yakındı, ama dendarii özel bitiş endeksi ile o kadar küçük bir adımdı ki, son çözümümü kendi başıma buldum, ama kredi vermek istedim. İşte benim son çözümüm:
Private Sub CommandButtonLoopThruFlaggedSheets_Click()
' determine current bounds
Dim StartIndex, EndIndex, LoopIndex As Integer
StartIndex = Sheets("FlagNew").Index + 1
EndIndex = Sheets("FlagEnd").Index - 1
For LoopIndex = StartIndex To EndIndex
MsgBox "this worksheet is: " & Sheets(LoopIndex).Name
' code here
Next LoopIndex
End Sub
Kirk, bunun farkında olmayabilir, ancak sonunda bir tip ile aynı hat üzerinde 3 değişken bildirirseniz, sadece son değişken aslında başkalarının varyantları olarak sona, bu tür alır. Tüm bildirimlerinizi tek bir satırda yapacaksanız, "Dim StartIndex Tamsayı, EndIndex Tamsayı, LoopIndex Tamsayı" olarak belirtmeniz gerekir. – dendarii
Doh, kendimi tekrar kısayollarla yaktım! Teşekkürler farkında değildim, onu değiştireceğim. –