sé cómo recorrer todas las hojas de un libro, y la forma de salir una vez que llegan a un 'indicador de final de' hoja de trabajo:¿Cómo puedo recorrer un subconjunto de hojas de trabajo?
For Each ThisWorkSheet In Worksheets
If ThisWorkSheet.Name = "FlagEnd" Then Exit For
MsgBox "This worksheet name is: " & ThisWorkSheet.Name
Next
Sin embargo no puedo conseguir el bucle para comenzar en un 'arranque marcar la hoja de trabajo (o incluso mejor en la hoja de cálculo justo después de la hoja de trabajo de inicio de bandera. Por ejemplo, las hojas de trabajo de inicio/fin marcadas están en el medio de otras hojas de trabajo, por lo que no se puede iniciar o finalizar el recorrido.
Podría haber cientos de hojas de trabajo antes de esa hoja 'FlagStart', así que realmente necesito comenzar en la hoja correcta.
intentado:
Set ThisWorkSheet = Sheets("FlagNew")
y
For Each Sheets("FlagNew") In Worksheets
ideas?
Solución: Mathias estaba muy cerca, pero Dendarii que era pequeño paso más estrecha con la costumbre que termina índice. De hecho, descubrí mi solución final por mi cuenta, pero quería dar crédito. Aquí fue mi solución final:
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, que puede no ser consciente de ello, pero si se declara 3 variables en la misma línea con un tipo al final, sólo la última variable que realmente ocurre ese tipo, los demás terminan como variantes. Si va a tener todas sus declaraciones en una línea, debe especificar "Dim StartIndex como Integer, EndIndex como Integer, LoopIndex como Integer". – dendarii
¡Doh, me quemé con atajos otra vez! Gracias, no estaba enterado de eso, lo cambiaré. –