【发布时间】:2009-10-19 22:17:12
【问题描述】:
我知道如何遍历工作簿中的所有工作表,以及在到达“结束标志”工作表后如何退出:
For Each ThisWorkSheet In Worksheets
If ThisWorkSheet.Name = "FlagEnd" Then Exit For
MsgBox "This worksheet name is: " & ThisWorkSheet.Name
Next
但是,我无法在“开始标志”工作表上开始循环(甚至在开始标志工作表之后的工作表上更好。例如,标记的开始/结束工作表位于一堆中间其他工作表,所以开始或结束遍历是不可行的。
在“FlagStart”工作表之前可能有数百个工作表,所以我真的需要从正确的工作表开始。
试过了:
Set ThisWorkSheet = Sheets("FlagNew")
和
For Each Sheets("FlagNew") In Worksheets
想法?
解决方案: Mathias 非常接近,但 dendarii 离自定义结尾索引更近了一小步。我实际上自己想出了我的最终解决方案,但想表扬一下。这是我的最终解决方案:
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,你可能没有意识到这一点,但如果你在同一行声明 3 个变量,最后一个类型,只有最后一个变量实际上采用该类型,其他变量最终成为变体.如果要将所有声明放在一行上,则需要指定“Dim StartIndex as Integer, EndIndex as Integer, LoopIndex as Integer”。
-
呵呵,又被快捷方式烫伤了!谢谢,我不知道,我会改变它。