分享

EXCELHOME VBA培训第三课时学习笔记

 十八小子 2013-03-14
 

                                               VBA入门班 11102班学员 _s_bri

 

        本节课是由叶枫老师主讲的,内容是:SUB过程与程序流程控制语句。

      一、Sub过程

     ★ 概念:一个过程就是一组完成所需操作的VBA代码的组合

     ★VBA过程主要包括“Sub过程”和“Funtion过程”两种

      Sub过程不可以返回值,Funtion过程可以返回值。

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

      Sub过程的特点:

     1.以“Sub过程名()”开头,以“End Sub”结尾。

     2.Sub过程一般保存在模块里。

     3.Sub过程不返回结果—值。

     ● Sub过程的声明:

      [ Public | Private ] [ Static ] Sub 过程名称([ 参数1,参数2,… ] )

          [ 语句块 ]

          [ Exit Sub ]  ′强制退出Sub过程

          [ 语句块 ]

    End Sub

注:Public — 公共

       Private — 私有

       Static — 保存变量结果

      ● 从一个过程执行另一个过程(过程的调用)

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

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

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

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

     3.利用Application对象的 Run方法

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

   二、判断与循环语句 

1.选择结构

使用If…Then…Else语句可以实现右图的选择结构。其执行过程为:判断给定的条件P,如果为真,执行A块;否则(为假)执行B块。

A: 单分支选择结构语句If…Then…Else

  语句格式:

  If 条件 Then

    语句1

    [ Else 语句2 ]

End If

说明:

⑴.“条件”可以是关系表达式、逻辑表达式或数值表达式。对于数值表达式,VBA视零为False,而将所有非零值解释为True。

⑵.当条件为真时,执行 Then 与Else 之间的语句块1;重条件为假时,执行 Else 后的语句块2。

⑶.如果没有 Else 部分,则将语句块2视为空操作,即不作任何处理的操作块。

我的个人练习1

计算分段函数

 y=x+1 (x>=0)

y=1-2x (x<0)

分析:该题列出了两个条件x≥0和x<0,在进行VBA程序设计时,只需要选择其中的任意一个。在Excel VBE 窗口新建一模块,输入代码1,然后在Excel工作表建立一窗体按钮,给指定宏为:计算. 

Sub 计算()

    Dim x As Single, y As Single

    x = Cells(2, "b")

    If x >= 0 Then

    y = 1 + x

    Else

    y = 1 - 2 * x

    End If

    Cells(3, "b") = y

End Sub

B、多分支选择结构If…Then…ElseIf

语法格式

If 条件1 Then

语句块1

[ ElseIf 条件2 Then

语句块2

…]

[ Else

语句块 n+1 ]

End If

用途:当需解决的事情有多个走向时,使用的一种语句。

说明:

⑴.Else 和 ElseIf 子句是可选部分,且可以有任意多个 ElseIf子句。

⑵.程序运行时,先测试“条件1”,如果为真,则执行 语句块1,如果为假,则依次测试每个 ElseIf 部分的条件表达式,当某个 ElseIf 的条件为真时,则执行该 语句块。如果所有条件都为假,则执行 Else 部分的语句块。

⑶.当某个条件为真并执行完与之相关的语句块后,程序将不再判断其后的条件,而直接执行 End If后面的语句。

我的个人练习2

某超市五一节期间进行促销,优惠方案如下:

⑴购物在80元(含)以上者,按九五折优惠

⑵购物在150元以上者,按九折优惠

⑶购物在300元以上者,按八五折优惠

⑷购物在500元以上者,按八折优惠

Sub 支付()
             Dim x As Currency, y As Currency
             x = Cells(3, "B")
             If x >= 500 Then
                   y = 0.8 * x
             ElseIf x >= 300 Then
                  y = 0.85 * x
             ElseIf x >= 150 Then
                   y = 0.9 * x
             ElseIf x >= 80 Then
                   y = 0.9 * x
             Else
                   y = x
             End If
             Cells(3, "C") = y
     End Sub

 

C:多分支选择结构Select Case

语法格式

Select Case 测试条件

  Case 表达式1

      语句块1

  [ Case 表达式2

      语句块2

  …]

  [ Case Else

      其他语句块]

End Select

说明:

⑴“测试条件”为必要参数,一般为数值表达式或字符串表达式。

⑵Case 子句中的表达式可以是以下3种情形之一:

   ●表达式:如,Case a+b、Case “Excel home”。

   ●表达式1 To 表达式2:Case 100 To 200、Case “a” To “z”。这种形式表示的范围包含表达式1和表达式2的值,且表达式1的值小于表达式2。

   ●Is 关系运算表达式:如,Case Is >=80。

⑶可以将上述形式组合起来使用,表达式之间须用逗号分隔。如,Case 5,14,30 To 60,80、Case “A” To “z”,它们之间的关系是“逻辑或”。

个人练习3

题目仍是五一超市优惠活动的题。

Sub 优惠()
    Dim x As Single, y As Currency
    x = Cells(3, "B")
    Select Case x
        Case Is >= 500
            y = 0.8 * x
        Case Is >= 300
            y = 0.85 * x
        Case Is >= 150
            y = 0.9 * x
        Case Is >= 80
            y = 0.95 * x
        Case Else
            y = x
    End Select
    Cells(3, "C") = y
End Sub

 

2、循环结构

A.For…Next 语句

For…Next语句用来实现循环次数已知的循环结构。

语法格式

For 循环变量=初值 To 终值 [Step 步长]

    语句块1

    [Exit For]

    语句块2

Next [循环变量]

说明:

⑴“循环变量”为必要参数,是一个用做循环计数器的数值型变量。

⑵“步长”为循环变量的增量,可以是正数或负数,默认值为1。当步长为正数时,初值应小于终值;否则,初值应大于终值。步长值绝对不可为0!否则出现死循环。

⑶每次循环后都会根据步长自动改变循环变量的值,并根据步长的正负判断循环变量的当前值是否在终值内,若是则执行循环体,否则结束循环。

⑷在For和Next之间可以存在一个或多个Exit For语句,遇到该语句时表示退出循环,并执行Next之后的语句。Exit For语句一般用在条件判断语句(如If…Then)中,即当满足给定条件时退出循环。

(5)循环次数=Int((终值-初值)/2+1)

个人练习4

在B3:B12区域输出3位能被15整除的前10个正整数偶数。

分析:能被15整除的偶数,条件形式为 n Mod 15 And n Mod 2

 

代码

Sub shuchushuzhi()

    Dim i As Integer, x As Integer, y As Integer

    x = 0

    y = 2

    For i = 100 To 999

        If i Mod 15 = 0 And i Mod 2 = 0 Then

            y = y + 1

            Cells(y, "B") = i

            x = x + 1

        End If

        If x >= 10 Then Exit For

    Next i

End Sub

 

B:For Each…Next 循环语句

当需要在一个集合的所有对象或者一个数组的所有元素之间循环时,使用该语句。

语法格式

For Each 元素变量 In 对象集合

    语句块

    [Exit For]

    语句块

Next 元素变量

示例请看http://t./thread-2114-1-1.html  我上交的作业

 

C、Do While 循环语句

根据给定条件决定是否执行循环体内的语句。

1、开头判断循环条件

语法格式

Do While 条件

   循环体

   [ Exit Do]

   循环体

Loop

 2、结尾判断循环条件

语法格式

Do

    循环体

    [Exit Do]

    循环体

Loop [ While 循环条件 ]

注:一般使用开头判断循环条件。

示例请看http://t./thread-2114-1-1.html  我上交的作业.

 D、Do Until 循环语句

执行循环体直到条件成立退出循环

1、开头判断循环条件

语法格式

Do [ Until 循环条件 ]

    循环体

   [ Exit Do ]

    循环体

Loop

2、结尾判断循环条件

语法格式

Do

    循环体

    [Exit Do]

    循环体

Loop [ Until 循环条件 ]

注:一般使用开头判断循环条件。

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多