分享

VBA基础04--循环语句

 L罗乐 2016-11-15

用心了自然而然的就通了,沉下心去看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




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多