Excel VBA学习笔记-2

1.从函数中返回字符串

 

某些函数具有两种版本:一种返回 Variant 数据类型,而另一种返回 String 数据类型。Variant 版本较为方便因为变形体会自动地处理不同类型间的传输。它们同时也允许 Null 通过表达式来发送。String 版本较具有效率,因为它们使用较少的内存。

当有下列之情形时可考虑使用 String 版本:

 a,程序很大并且使用很多的变量。

 b,将数据直接写到随机存取文件中

 

 

 

当在函数名称后面加上一个美元符号($)时,下列的函数会对于 Sting 变量返回一个数值。这些函数若不加上美元符号用法与语法与 Variant 相等。

 

 

2.可选的参数

 

 

在过程的定义中,可选的参数前会有一个 Optional 关键字。在过程的定义中也可以指定一个缺省值赋予可选的参数。例如:

 

Sub OptionalArgs(strState As String, Optional strCountry As String = "USA")
. . .
End Sub

 

 

3.参数数组

 

参数数组可用来传递数组的参数给过程。所以当定义过程时就不用知道数组中的元素个数。

使用 ParamArray 关键字来指示一个参数数组。而此数组必须被声明为 Variant 类型的数组,并且此数组必须是过程定义中最后面那个参数。

 

 

 

Sub AnyNumberArgs(strName As String, ParamArray intScores() As Variant)
    Dim intI As Integer

    Debug.Print strName; "    Scores"
    ' 用 UBound 函数决定数组的上限。
    For intI = 0 To UBound(intScores())
        Debug.Print "          "; intScores(intI)
    Next intI
End Sub

Sub test()

AnyNumberArgs "Jamie", 10, 26, 32, 15, 22, 24, 16

AnyNumberArgs "Kelly", "High", "Low", "Average", "High"

End Sub
 

4.使用数组

缺省规定,数组的索引是从零开始,所以curExpense(364)的上标界是364,具有365个元素

a、可以在模块的顶部使用 Option Base 语句,将第一个元素的缺省索引值从 0 改成 1。

 

Option Base 1
Dim curExpense(365) As Currency

 

b、也可以利用 To 子句来对数组的底层绑定做显示地声明

 

Dim curExpense(1 To 365) As Currency
Dim strWeekday(7 To 13) As String
 

 

5.使用 Do...Loop 语句

a.直到条件为 True 时重复语句:

 

Sub ChkFirstWhile()
    counter = 0
    myNum = 20
    Do While myNum > 10
        myNum = myNum - 1
        counter = counter + 1
    Loop
    MsgBox "The loop made " & counter & " repetitions."
End Sub

Sub ChkLastWhile()
    counter = 0
    myNum = 9
    Do
        myNum = myNum - 1
        counter = counter + 1
    Loop While myNum > 10
    MsgBox "The loop made " & counter & " repetitions."
End Sub

 

 b.直到条件变成 True 才重复语句:

 

Sub ChkFirstUntil()
    counter = 0
    myNum = 20
    Do Until myNum = 10
        myNum = myNum - 1
        counter = counter + 1
    Loop
    MsgBox "The loop made " & counter & " repetitions."
End Sub

Sub ChkLastUntil()
    counter = 0
    myNum = 1
    Do
        myNum = myNum + 1
        counter = counter + 1
    Loop Until myNum = 10
    MsgBox "The loop made " & counter & " repetitions."
End Sub

 

 c.从循环内退出 Do...Loop 语句:

 

Sub ExitExample()
    counter = 0
    myNum = 9
    Do Until myNum = 10
        myNum = myNum - 1
        counter = counter + 1
        If myNum < 10 Then Exit Do
    Loop
    MsgBox "The loop made " & counter & " repetitions."
End Sub

 

 

6.使用 For Each...Next 语句

a.对某范围的单元格做循环:

 

Sub RoundToZero()
    For Each myObject in myCollection
        If Abs(myObject.Value) < 0.01 Then myObject.Value = 0
    Next
End Sub

 

 b.在完成前退出 For Each...Next 循环:

 

Sub TestForNumbers()
    For Each myObject In MyCollection
        If IsNumeric(myObject.Value) = False Then
            MsgBox "Object contains a non-numeric value."
            Exit For
        End If
    Next c
End Sub

 

 

7.使用 For...Next 语句

使用 Step 关键字,可以由所指定的值增加或减少计数变量

 

Sub TwosTotal()
    For j = 2 To 10 Step 2
        total = total + j
    Next j
    MsgBox "The total is " & total
End Sub

 

 为了减少计数变量的值,可以使用负的 Step 值。为了减少计数变量的值,必须指定一个小于开始值的结束值。在下面的示例中,计数变量 myNum 会在每次循环重复时减去 2。当循环完成时,total 的值为 16、14、12、10、8、6、4 和 2 的总合。

 

Sub NewTotal()
    For myNum = 16 To 2 Step -2
        total = total + myNum
    Next myNum
    MsgBox "The total is " & total
End Sub

 

 8.使用 Select Case 语句

 

Function Bonus(performance, salary)
    Select Case performance
        Case 1
            Bonus = salary * 0.1
        Case 2, 3
            Bonus = salary * 0.09
        Case 4 To 6
            Bonus = salary * 0.07
        Case Is > 8
            Bonus = 100
        Case Else
            Bonus = 0
    End Select
End Function

 

 

9.将数据写到文件中

 

顺序访问(Input、Output 和 Append 方式)被用来写入文本文件,比如错误登录和报告。

 

随机访问(Random 方式)被用来读取与写入数据到文件并且没有关闭文件。随机访问文件在记录中保留数据,如此可很快的找出信息所在。

 

二进制访问(Binary 方式)被用来读取或写入数据到文件中任何的字节位置,例如存储或显示一个位图图象。 

注意 Open 语句不可以用来打开一个应用程序专属的文件类型。例如,不可使用 Open 去打开一个 Word 文档, a ,Microsoft Excel 的电子数据表,或是 Microsoft Access 数据库。若如此做的话会丢失文件的完整性,并造成文件的毁损。 

 

当从文件读取数据和写入数据到文件时,下表列出了所使用的典型语句。

 

访问类型写入数据读取数据
顺序 Print #, Write # Input #
随机PutGet
二进制Put

Get

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值