加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

SUB过程与程序流程控制语句

(2010-08-29 14:04:32)
标签:

杂谈

本课内容:SUB过程与程序流程控制语句   讲师:叶枫(ggsmart

论坛链接:http://club.excelhome.net/ 

     这个课时已经是vba的第四课时了,这次又是叶枫老师的课,听着叶枫老师带有磁性的声音,耐心的讲解,意味着本次入门班的全部课程已经结束。非常感谢老师和助教的辛勤劳动。开始的两节课比较简单,后两节课难度对于我来说相当的大。还好我坚持下来了。。。坚持就是胜利。。。。

 

第一部分:SUB过程

一个过程就是一组完成所需操作的VBA代码的组合。

VBA过程分Sub过程和Function过程。
          1、Sub过程总是以“sub 过程名()”开头,以“End Sub”结尾,sub过程一般保存在模块里,一个过程就是执行某项动作的一套指令,Sub过程不返回运行的结果。
          2、Function总是以“Function 程序名()”开头,以“End Function”结尾,和Sub过程的区别是Function过程返回程序运行的值,值可以是一个值或一个数组,就像我们的工作表函数,Function过程也就是我们说的自定义函数。

1.声明sub过程

录制宏就是一个简单的sub过程,使用录制宏功能只能生成sub过程的代码

  如何定义变量?
          定义变量可以使用Dim语句:
  
                                        Dim 变量名 As 数据类型

  定义变量除了可以使用Dim语句外,比较常的还有:static语句,Private语句,Public语句。使用不同的语句定义的变量不同的是它们的作用作用域不同,具体为:
          (1)如果在一个过程中包含了一个Dim或Static语句,此时声明的变量作用域为此过程,即本地变量
          (2)如果在一个模块的第一个过程之前包含了Dim或Prvate语句,此时声明的变量作用域为此模块里所有的过程,也就是在此模块里所有的过程都可以使用它,即模块作用域下的变量;         
          (3)如果在一个模块的第一个过程之前包含了Public语名,此时声明的变量作用域为所有模块,即公有变量

2.从过程执行另一个过程

输入过程名称以及参数,参数用逗号隔开

过程名[,参数1,参数2…]

在过程名称以及参数前使用call关键字,参数用括号括起来,并用逗号隔开。

Call过程名[(参数1,参数2…)]

使用Application对象的run方法。

    Application表示过程名的字符串(或字符串变量)[参数1,参数2…]

 

第二部分:判断与循环语句

1if—then语句
  这个句式相当于中文里面的“如果.......那么”。
  格式:
    if  逻辑表达式 then
                              语句块
             end if
    解释:如果逻辑表达式的结果为true,则执行语句块里的所有语句,否则执行end if后面的语句。语句块可以是一句指令或多条指令,也可以调用一个或多个过程,当然,也可以为空,就是没有语句。

2 if—then—else语句  
  这个语句相当于中文里面的“如果......那么......否则......”句式。
  格式:

    if  逻辑表达式 then
                              语句块1
    else
                              语句块2
              end if

       解释:如果逻辑表达式的结果为true,则执行语句块1里的所有语句,如果逻辑表达式的结果为Flase则执行语句块2里的所有语句。

3if—then—elseif语句
  这就相当于中文里面的若“如果…那么…否则如果…那么…否则”语句,当然,可以有多句“否则如果.......”
  格式:
    If  逻辑表达式1 Then  
                              语句块1
                  ElseIf  逻辑表达式2  Then
                              语句块2
                  ElseIf  逻辑表达式3Then
                              语句块3
                  
                 Else
                             语句块n
                 Eed If
  解释:若逻辑表达式1的结果为True,则执行语句块1,接着继续执行EndIf后面的语句;若逻辑表达式1的结果为False,则检查逻辑表达式2的结果,若为True则执行语句块2,接着继续执行EndIf后面的语句.......一直到所有结果的条件都不满足时,才执行Else后面的语句块n。

Select Case语句同IF语句一样,也是条件判断的语句。它的功能也可以用IF语句来完成。但是,当程序的条件太多,用IF语句来判断的话就存在一些不足了,比如程序是否美观?是否便于阅读?程序的执行效率等等。Select Case语句在执行的效率上,同IF语句相比,肯定是要快得多。

4.Select Case语句的语法

  Select Case 测试表达式
        Case 条件表达式1
              语句块1
        Case 条件表达式2
              语句块2
       Case 条件表达式3
              语句块3
       ......
       Case 条件表达式n
              语句块n
       Case Else
              语句块Else
     End Select.

当某个条件表达式与测试表达式相匹配时,则执行其后的语句块,否则执行Case Else后的语句块,然后结束Select Case块的执行。同IF语句一样,可以不要Case Else语句。

5.For—next 的句式:

  For 循环变量=初值 to 终值 step 步长
       循环体1
      [exit for]
      循环体2
  next 循环变量      

解释:从开始到结束,反复执行For和Next之间的指令块,除非遇到Exit For语句,将提前跳出循环。其中,步长和Exit For语句以及Next后的循环变量均可省略,步长省略的时候默认为1。Exit for 语句是强制终止循环的语句,执行它后将退出循环,执行next后面的语句。

6.For—Each语句的句式

For Eacn 元素变量 In 对象集合或数组名称
      语句块1
      [Exit For]
      语句块2
next 元素变量

和上面For—next句式是一样的工作原理。
这里的“元素变量”是用来遍历集合或数中中元素的变量,它从集合或数组的第一个元素开始,直到最后一个元素,然后退出循环。

7.Do While也是循环语句,它分为两种情况,一种是把循环条件放在开头,一种是把循环条件放在结尾。

1、开头判断循环条件
    语句格式:
       Do Wihle 循环条件
            语句块1
           [Exit Do]
            语句块2
      Loop
    首先判断循环条件,条件为真则执行Do到Loop之间的语句。

2、结尾判断循环条件
    语句格式:
        Do
            语句块1
           [Exit Do]
            语句块2
       Loop Wihle 循环条件

      先执行一次Do到Loop之间的语句,再判断循环条件,满足条件则进行循环

8.Do Until 语句

这个和Do While语句类似,它也有两种形式,学了Do While语句,再看这个,就可以无师自通了。下面就简单介绍下:
1、开头判断循环条件
  语句格式:
       Do Until 循环条件
            语句块1
           [Exit Do]
            语句块2
      Loop
   
2、结尾判断循环条件
    语句格式:
        Do
            语句块1
           [Exit Do]
            语句块2
       Loop Until 循环条件

       执行Do 和Loop之间的指令,直到循环条件为真时退出循环。
       直到循环条件为真时退出循环,这是Do Until 与  Do While的区别。而它两种语句格式的区别,也是第二种比第一种多执行一次循环部分的语句。

 

课后感想:

这次的培训马上就要结束了,这课的作业对于我来说好难,看着叶枫老师在那将代码写的挥洒自如,但是真要自己动手写,还真不知从何下手,好不容易写出上句,又不知道怎么写下句了,哎…..头大啊。经过了高人的指点才勉强将作业完成,汗…真要将学到的理论知识运用到实践中可不是一朝一夕的事情,需要通过反复的实践,反复的实际应用才能更好地消化和掌握。看来还要多多加油啊~~~要不对不起各位老师的认真负责~~~
     这个初级班的四个课时马上就要结束了,很舍不得~一路上被各个截止时间赶着催着,很有紧迫感,自己不断的挤时间做练习,仍有好多练习题没有做出来,感觉回到了当年的学生时代~
   真要发自内心的感谢一下各位,花了好多时间精力备课,出题,耐心为我们讲解的老师们,助教们,及时为我们解答各种问题,还有各位在论坛里和群里叽叽喳喳热烈讨论的同学。期待下一次的重逢,相聚!!!

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有