语法:For EachelementIngroup [ statements ] [ Exit For ] [ statements ] Next [ element ] 参数:1)element必需。用于循环访问集合或数组的变量。对于集合,element只能为Variant变量、通用对象变量或任何特定的对象变量。对于数组,element仅可是Variant变量。 2)group 必需。对象集合或数组(用户定义类型除外)的名称。 3)statements 可选。在每个项目上执行的一个或多个语句。 注意点: l如果group中有至少一个元素,则进入“For Each”循环。在进入循环后, 循环中的所有语句都将对group中的每一个元素执行。如果group中有多个元素,则继续为每个元素执行循环中的语句。group中不再有元素时,退出循环并继续执行“Next”语句后的语句。l可以将任意数量的Exit For语句作为另一种退出方式放置在循环中的任何位置。"退出" 通常在评估某些条件后使用, 例如,if…then…, 将执行下一个紧接着的语句。l可通过将“For Each...Next”循环放置在另一个该循环内来嵌套“For...Each...Next”循环。 但是,每个循环element必须是唯一的。l如果忽略Next [ element ] 语句中的[ element ],循环一样继续执行。不可随用户定义类型的数组一起使用“For Each...Next”语句,因为“Variant”不可包含用户定义类型。
2 遍历工作薄和工作薄的代码
下面代码中,我们将利用“For Each...Next”语句遍历所有打开的工作薄和每个工作薄的工作表的名称。 Sub mynzH() '遍历循环 Dim book As Workbook, sheet As Worksheet, text As String For Each book In Workbooks text = text & "Workbook: " & book.Name & vbNewLine & "Worksheets: " & vbNewLine For Each sheet In book.Worksheets text = text & sheet.Name & vbNewLine Next text = text & vbNewLine NextMsgBox textEnd Sub 代码截图: 代码讲解: 1) Dim book As Workbook, sheet As Worksheet, text As String 这句是对变量的声明,声明book、sheet、text分别为Workbook、Workbook、String。 2) For Each sheet In book.Worksheets text = text & sheet.Name & vbNewLine Next 以上是内层循环,将提取每个工作表的名称。 3) For Each book In Workbooks text = text & "Workbook: " & book.Name & vbNewLine & "Worksheets: " & vbNewLine。。。。。 text = text & vbNewLine Next 以上是外层循环讲提取每个工作薄的名称。4) MsgBox text 将弹出一个对话框,告诉用户提取的内容。 l注意:可以使用&运算符连接(联接)元素。若要开始新行,可以使用vbNewLine。