Hi,大家好,本专栏将会从零开始和大家用图文的方式,让你从零基础学会VBA!有兴趣的小伙伴可以持续关注我,或者在专栏自我查看学习,愿与君携手共进!
经过前面的几个章节的学习,相信你已经见识了很多种循环了的基本使用方法和语法,熟悉了解每种循环过程示范每个循环结构的使用。你殊不知在我们日常的编写过程中,经常会遇到将一个循环放置在另外一循环中的,通俗意义上说的是循环嵌套的使用。VBA允许将不同类型的循环(For和Do循环)“嵌套”在同一个过程里。因此当我们编写循环嵌套时,请确保每个内部的循环在外部循环里面已经完成。另外,每个循环都必须有其自己独特的计数器变量(如i,j)。如果使用循环嵌套,那么你可以更有效地,更加高效的执行特定的任务。
下面显示的过程ColorLoop示范如何嵌套一个For…Next循环在另一个For…Next循环里面,此段代码使用了两个For…Next循环来改变工作表中前面八行和七列里的每个单元格的颜色。当外部的循环在追踪行号的时候,内部的循环在做更多的事情,它首先确定当前的列号,基于当前的行号的列号选择适当的单元格,然后给所选的单元格设置颜色。
具体的运行原理所示所示,有兴趣的小伙伴可以看看:
现在我们举一个实际应用简单的例子,我们非常常见的九九乘法表的制作,当然这个也可以使用函数公式(A1=IF(COLUMN()>ROW(),"",ROW()&"X"&COLUMN()&"="&ROW()*COLUMN())
)来完成制作,但是我们今天要和你分享的是如何使用代码来完成这个制作。现在我们一起来学习制作一个九九乘法表的思路。
Step-01 首先我们分析九九乘法表的数据结构,我们最终要得到的结果如下所示。
数据的基本结构为axb=c,那么这个结构就是我们的数据处理核心结构。如何将这个转化为代码呢?axb=c代码可以写成i & "x" & j & "=" & j * i。i和j是我们循环的变量,使用“&”将他们进行连接。
Step-02 有了第一步的数据结构,那么如何将数据按照要求写入到工作表中间呢?按照我们的顺序写入,这个就要使用我们的循环嵌套了,对单元格进行判断。具体代码如下所示:这个代码是最最简单的一个代码了,简单的嵌套循环。
Sub nine9()
Dim i As Byte, j As Byte, s As Byte
For i = 1 To 9
For j = i To 9
Cells(j, i) = i & "x" & j & "=" & j * i
Next j
Next i
End Sub
Step-03 如下我们说说要在这个循环嵌套里面在加入IF判断,那么代码应该如何写呢?如下所示:
Sub aaa()
Dim arr(1 To 9, 1 To 9)
Dim i, j As Integer
For j = 1 To 9
For i = 1 To 9
If j <= i Then
arr(i, j) = j & "x" & i & "=" & i * j
End If
Next i
Next j
Range("A1:I9") = arr
End Sub
Step-04 可能有的小伙伴们会说,如何使用Do Loop语句来完成这个呢?其实他也可以实现这个功能的,也是非常简单,如下所示。有兴趣的小伙伴们可以自行试试看。
Sub nine99()
Dim i As Byte, j As Byte, s As Byte
i = 1
j = 1
Do
Do Until j = 9
If j >= i Then
Cells(j, i) = i & "x" & j & "=" & j * i
End If
j = j + 1
Loop
i = i + 1
j = 1
Loop Until i = 9
End Sub
以上使用了三种方式实现九九乘法表的制作,这个其实非常的简单,相信你已经可以自行写下这个的代码。在这里你学习了如何在使用单层循环和多层循环嵌套。通过使用好几种类型的循环,你看到了每种循环都有他们自己的优点。当你在后面的学习中间有了一些经验后,你将更容易地选择合适的循环控制结构来执行你的需求。
在本专栏后续的章节中,将会有越来越多的使用循环的例子。例如,在下章里,你将看到如何使用数组合嵌套的循环来创建一个VBA过程,该过程将帮你选择彩票号码。在下章里,你将学习如何处理大量的数据,而不会迷失在变量的海洋里。
好啦!快乐的时间总是非常短暂的,又到了和大家说再见的时候,如果大家感觉本文如果对你有所帮助的话,请帮忙转发点赞,谢谢您能观看到现在,我们下期再见!
我是Excel教案,关注我持续分享更多的Excel技巧!
如果有不明白的或者不懂的可以在下方留言,我们会一一解答的。
热门跟贴