用心了自然而然的就通了,沉下心去看10分钟就知道效果了 ******************************************************************* Sub t1() '注意循环语句面向的是有序有规律,有限次数或有终止条件的 Range('d2') = Range('b2') * Range('c2') '看看这些都是有规律可寻的,同一行单元格里 D2 = B2 C2 , 下面也是同样 Range('d3') = Range('b3') * Range('c3') '一行行的处理起来,还不如使用公式来便捷,当然这些个例题都是用来说明 VBA 很强大 Range('d4') = Range('b4') * Range('c4') '你说一个函数搞定,但是如果是数百的表要处理,你每次是不是都要输入一次函数,就算是复制粘贴想想也觉着累 Range('d5') = Range('b5') * Range('c5') '使用 VBA 就可以了,点一下,全部搞定 Range('d6') = Range('b6') * Range('c6') End Sub ****************************************************************** 上面那些,下面一个过程搞定了 Sub t2() Dim x As Integer '定义一个整型变量 x For x = 10000 To 2 Step -3 '初始化 x 的初始值为 10000 到 终止值 2,一看就是降序的方式,步副是 -3 Range('d' & x) = Range('b' & x) * Range('c' & x) '将上面过程中的一个行拿过来修改一下 OK,那个 & 是字符串拼接符,如:'b' & x 结果就是 bx Next x End Sub ******************************************************************* 针对第一个过程里的操作,第二种操作方式如下 Sub t3() Dim rg As Range '这里不同以前看到的,它定义的是一个单元格区域类型 For Each rg In Range('d2:d18') '这也是一个循环,这个循环使用的方式是 在已有的数据中循环提取出来进行处理 rg = rg.Offset(0, -1) * rg.Offset(0, -2) '同时,这里的不是用单元格的方式来运算,而是使用与当前格的绝对偏移来选取其它两个单元格 Next rg End Sub ******************************************************************* 使用 do......loop Until 循环语句的方式处理 Sub t4() Dim x As Integer x = 1 '这里给 x 一个初始值 Do x = x 1 '将 x 值循环 加1,直到 x 的值等于 18 才登上循环,Until 英文意思就是 直到....时候,才怎么样 Cells(x, 4) = Cells(x, 2) * Cells(x, 3) '这里使用 Cells(行数,列数) 的方式来选择单元格 Loop Until x = 18 End Sub ******************************************************************* 使用 Do While......loop 循环的方式来实现 Sub t5() x = 1 '给 x 一个初始值,这里没有使用 dim 进行定义也是可以的,就是 vba 的自由之处 Do While x < 18 '当 x 的值 小于 18 时,开始执行以下代码 x = x 1 '每循环一次 x 1 一次,直接它 不小于 18 时,While 的条件不满足时,就会停止循环 Cells(x, 4) = Cells(x, 2) * Cells(x, 3) Loop End Sub ======================================================================= 再看两个例子吧 Sub s1() Dim rg As Range '定义一个区域类型,你懂的吧 For Each rg In Range('a1:b7,d5:e9') '看这个有啥不同,不错,它可以有多个区域,但处理数据还是每次处理一个单元格 If rg = '' Then rg = 0 End If Next rg End Sub *********************************************************** 下面是将判断语句嵌套在循环中 Sub s2() Dim x As Integer '注意这里定义了 x 是整型变量,但没有给初始值,整型数据初始值默认为 0 Do x = x 1 If Cells(x 1, 1) <> Cells(x, 1) 1 Then '假设 x=1, 判断 cells(2,1) <> cells(1,1) 1 是否正确或是否为真,如果成立 Cells(x, 2) = '断点' '则将 Cells(1,2) 单元格的值填充 “断点” Exit Do End If Loop Until x = 14 End Sub |
|