codecamp

VB的循环嵌套

到目前为止,你已经在本章里尝试了很多种循环了,每种过程示范每个循环结构的使用。然而,在编程中,一循环总是放在另外一循环中的。VB允许你将不同类型的循环(For和Do循环)“嵌套”在同一个过程里。当你编写循环嵌套时,请确保每个内部的循环在外部循环里面已经完成。另外,每个循环都必须有其自己独特的计数器变量。如果使用循环嵌套,你可以更有效地执行特定的任务。

下面显示的过程ColorLoop示范如何嵌套一个For…Next循环在另一个For…Next循环里面:

Sub ColorLoop()
Dim myRow As Integer
Dim myCol As Integer
Dim myColor As Integer
myColor = 0
For myRow = 1 To 8
For myCol = 1 To 7
Cells(myRow, myCol).Select
myColor = myColor + 1
With Selection.Interior
.ColorIndex = myColor
.Pattern = xlSolid
End With
Next myCol
Next myRow
End Sub

上面的过程ColorLoop使用了两个For…Next循环来改变工作表中前面八行和七列里的每个单元格的颜色。当外部的循环在追踪行号的时候,内部的循环在做更多的事情,它首先确定当前的列号,基于当前的行号的列号选择适当的单元格,然后给所选的单元格设置颜色。


内部的For…Next循环给工作表的第一行的七个单元格(A1, B1, C1, D1, E1, F1和G1)设置不同的颜色。当变量myCol大于7时,VB跳回外部循环并且变量myRow增加1,再回到内部循环去设置下一行单元格的颜色。当过程结束时,56个单元格(8*7)被设置了当前调色板上可用的所有颜色。第一个单元格,A1,被设置了黑色(颜色索引号为1),第二个单元格B1则被设置为白色了(颜色索引号为2)。每次单元格地址变化——Cells(myRow, myCol).Select——变量myColor的内容也会改变——myColor = myColor + 1

在本章里,你学习了如何在循环里重复一组代码。通过使用好几种类型的循环,你看到了每种循环
稍稍不同地进行重复。你有了经验后,你将更容易地选择合适的控制结构来执行你的任务。

在本教程后续的章节中,将会有更多的使用循环的例子。例如,在下章里,你将看到如何使用数组合嵌套的循环来创建一个VBA过程,该过程将帮你选择彩票号码。在下章里,你将学习如何处理大量的数据,而不会迷失在变量的海洋里。


VB的For Each…Next循环
初步认识VBA数组
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }