Excel VBA循环语句
2020-10-28
来源:意榕旅游网
lFor… nextfor i=初始值 to 结束值 step 步长值 ……next具体解释一下,初始值指的是循环开始的值,结束值指的是循环结束的值,实质上就是i值得一个判断,如果i值在起始值和结束值之间,那么进入循环语句,然后i值每运行到next语句后会自动加一个步长值,直至i值超出了初始值到结束值这个范围,循环才会结束。这里要说明一下”step 步长值“往往是省略掉的,省略掉的话,步长取默认值为1。下面将以一段小实例来具体说明这个结构的用法:实例:在sheet1工作表中一次输出1到10这个数,显示在第一列中。Sub 循环语句()Dim i As IntegerFor i = 1 To 10 Step 2 Cells(i, 1) = iNextEnd SubSub 循环语句()Dim i As IntegerFor i = 10 To 1 Step -1 Cells(i, 1) = iNextEnd SublFor each… nextFor each 对象变量 in 对象集合 ……next具体解释一下,这里我们看到和上一个结构的而不同的是上面一种结构主要是数值变量,而这种结构是对象变量。什么意思呢?each……in指的是在这个对象集合里面,一次将每一个对象都遍历一边。同样的道理,执行到next后对象自动指到下一个。具体我们来看一下下面的一个实例吧实例:给一个数据区域内的所有单元格赋值,从1开始。Sub 循环语句()Dim i As IntegerFor Each c In Range(\"a1:c5\")i = i + 1c.Value = iNextEnd SubUnrestricted循环语句运用起来是很灵活的,上面只介绍了两种循环语句的基本用法,循环语句是可以套用的,下面我们用多循环语句嵌套来实现乘法口诀:Sub 循环语句()Dim i, j As IntegerFor i = 1 To 9 For j = 1 To i Cells(i, j) = i & \"*\" & j & \"=\" & i * j NextNextEnd SublDo while<条件表达式>语句块(循环体)looplDo语句块(循环体)loop while<条件表达式>lDo until<条件表达式>语句块(循环体)looplDo语句块(循环体)loop until<条件表达式>Unrestricted判断条件放在loop后至少执行循环一次,放在do后边有可能一次也不执行循环体是一组VB语句,循环终止条件是一个逻辑表达式。当心循环(while):当条件成立时执行循环体(ture)直到型循环(until):直到条件成立时推出循环体(false)注:当型循环和直到型循环的判断条件相反例如:已知S=1+2+3+…+N,找出一个最大的整数N,使得S<30000。编写程序解决。Sub 循环语句1()Dim s, n As Integers = 0n = 1Dos = s + nn = n + 1Loop While s < 30000Cells(1, 1) = n - 2End SubSub 循环语句3()Dim s, n As Integers = 0n = 1Dos = s + nn = n + 1Loop Until s >= 30000Cells(3, 1) = n - 2End SubSub 循环语句2()Dim s, n As Integers = 0n = 1Do While s < 30000s = s + nn = n + 1LoopCells(2, 1) = n - 2End SubSub 循环语句4()Dim s, n As Integers = 0n = 1Do Until s >= 30000s = s + nn = n + 1LoopCells(4, 1) = n - 2End SublWith…end withWith object(statements)End withWith 语句可以对某个对象执行一系列的语句,而不用重复指出对象的名称。例如,要改变一个对象的多个属性,可以在 With 控制结构中加上属性的赋值语句,这时候只是引用对象一次而不是在每个属性赋值时都要引用它。下面的例子显示了如何使用 With 语句来给同一个对象的几个属性赋值。UnrestrictedWith MyLabel.Height = 2000 .Width = 2000 .Caption = \"This is MyLabel\" End With 注意 当程序一旦进入 With 块,object 就不能改变。因此不能用一个 With 语句来设置多个不同的对象。可以将一个 With 块放在另一个之中,而产生嵌套的 With 语句。但是,由于外层 With 块成员会在内层的 With 块中被屏蔽住,所以必须在内层的 With 块中,使用完整的对象引用来指出在外层的 With 块中的对象成员。重点 一般来说,建议您不要跳入或跳出 With 块。如果在 With 块中的语句被执行,但是 With 或 End With 语句并没有执行,则一个包含对该对象引用的临时变量将保留在内存中,直到您退出该过程。lWhile条件表达式语句块(循环体)Wend如果条件为True,则所有的循环都会执行,一直执行到 Wend 语句。然后再回到 While 语句,并再一次检查条件,如果condition还是为True,则重复执行。如果不为 True,则程序会从 Wend语句之后的语句继续执行。While...Wend 循环也可以是多层的嵌套结构。每个 Wend 匹配最近的 While 语句。例如:求1+2+3+…+20=?Sub 循环语句()Dim s, i As Integers = 0i = 1While i <= 20s = s + ii = i + 1WendCells(1, 1) = sEnd SubFor循环语句:lFor和Do loop的比较1.2.3.4.采用For语句比Do loop更加简明一般情况下,能够预先确定循环次数事,应优先采用for语句,否则的话应该使用Do loop。For循环次数已知,do/while循环次数未知For循环用step来实现对循环变脸的控制和变化,do/while单独列出一个语句来表示循环变量的变化,从而实现对循环变量的控制。Unrestricted