目录:
- 一个For-Next示例
- Sub AddOddNumbers()Dim Total As Double Dim Cnt As Long Total = 0 For Cnt = 1 To 1000 Step 2 Total = Total + Cnt Next Cnt MsgBox Total End Sub
- Function TextPart(Str)Dim i As Long TextPart =”“For I = 1 To Len(Str)If IsNumeric(Mid(Str,i,1))Then Exit For Else TextPart = TextPart&Mid(Str, i,1)End If Next i End Function
- 外部循环
视频: vba05 For循环与数据批量处理 2024
Excel VBA编程中最简单的循环类型是For-Next循环。循环由计数器变量控制,计数器变量从一个值开始,在另一个值处停止。 For语句和Next语句之间的语句是在循环中重复的语句。
一个For-Next示例
以下示例使用For-Next循环对第一个1,000个正数进行求和。 Total变量从零开始。然后发生循环。变量Cnt是循环计数器。它从1开始,每次通过循环时加1。当Cnt是1,000时,循环结束。
<! --1 - >这个例子在循环中只有一条语句。该语句将Cnt的值添加到Total变量中。当循环结束时,MsgBox显示数字的总和。
Sub AddNumbers()Dim Total As Double Dim Cnt As Long Total = 0 For Cnt = 1 To 1000 Total = Total + Cnt Next Cnt MsgBox Total End Sub
因为循环计数器是一个正常的变量,代码在For和Next语句之间的代码块中更改其值。但是,这是一个非常糟糕的做法。 <! - 2 - > For-Next示例(步骤
)您可以使用Step值跳过For-Next循环中的一些计数器值。这里是前面的例子,重写仅1和1,000之间的奇数:Sub AddOddNumbers()Dim Total As Double Dim Cnt As Long Total = 0 For Cnt = 1 To 1000 Step 2 Total = Total + Cnt Next Cnt MsgBox Total End Sub
这次,Cnt从1开始,然后取值为3,5,7等等。 Step值确定计数器如何递增。请注意,上限值(1000)实际上并未使用,因为Cnt的最高值将是999.
<!下面是使用Step值为3的另一个示例。此过程适用于活动工作表,并将浅灰色阴影应用于从第1行到第100行的每第三行。
Sub ShadeEveryThirdRow( )昏暗我只要我= 1到100步骤3行(我)。室内。 Color = RGB(200,200,200)Next i End Sub
检查运行此宏的结果。使用循环将背景阴影应用于行。
下一个带有Exit For语句的示例
For-Next循环也可以在循环中包含一个或多个Exit For语句。当VBA遇到这个语句时,循环立即终止。
以下示例演示了Exit For语句。此例程是一个函数过程,打算在工作表公式中使用。该函数接受一个参数(名为Str的变量)并将字符返回到第一个数字的左侧。例如,如果参数是“KBR98Z”,则函数返回“KBR”。 “Function TextPart(Str)Dim i As Long TextPart =”“For I = 1 To Len(Str)If IsNumeric(Mid(Str,i,1))Then Exit For Else TextPart = TextPart&Mid(Str, i,1)End If Next i End Function
For-Next循环从1开始,以表示字符串中字符数的数字结束。该代码使用VBA的Mid函数来提取循环内的单个字符。如果找到数字字符,则执行Exit For语句,并且循环提前结束。
如果字符不是数字,则将其附加到返回的值(与函数的名称相同)。循环检查每个字符的唯一时间是如果作为参数传递的字符串不包含数字字符。
嵌套的For-Next示例
可以在循环中包含任意数量的语句,并将For-Next循环嵌套在其他For-Next循环中。
以下示例使用嵌套的For-Next循环将随机数插入到12行5列的单元格区域中。请注意,对于
外部循环
(带有列计数器的循环)的每次迭代,例程都执行
内部循环 (带有行计数器的循环)。换句话说,程序执行60次单元(行,列)= Rnd语句。 这些单元格使用嵌套的For-Next循环来填充。 Sub FillRange()Dim Col As Long Dim Row As Long For Col = 1 To 5 For Row = 1 To 12 Cells(Row,Col)= Rnd Next Row Next Col End Sub 下一个示例使用嵌套的For -Next循环用值100初始化一个三维数组。这个例程在所有循环(赋值语句)的中间执行1,000次(10 * 10 * 10)的语句,每次使用不同的组合对于i,j和k值:
Sub NestedLoops()Dim MyArray(10,10,10)Dim i As Long Dim j As Long Dim k As Long For i = 1 To 10 For j = 1 To 10对于k = 1到10 MyArray(i,j,k)= 100下一个k下一个j下一个i'其他语句在这里End Sub下面是使用嵌套的For-Next循环和Step值的最后一个例子。此过程通过更改交替单元格的背景颜色来创建棋盘格。
使用循环创建棋盘图案。
行计数器从1到8循环。一个If-Then构造确定使用哪个嵌套的For-Next结构。对于奇数行,Col计数器以2开始。对于偶数行,Col计数器从1开始。两个循环都使用2的Step值,因此交替单元格会受到影响。两个额外的陈述使细胞正方形(就像一个真正的棋盘)。 Sub MakeCheckboard()Dim R As Long,C As Long For R = 1 to 8如果WorksheetFunction。然后对于C = 2至8步骤2单元(R,C)。室内。颜色= 255下一个C否则对于C = 1到8步骤2单元(R,C)。室内。颜色= 255下一个C结束如果下一个R行(“1:8”)。RowHeight = 35列(“A:H”)。 ColumnWidth = 6.5 End Sub