VBA入門班 11102班學(xué)員 _s_bri
本節(jié)課是由葉楓老師主講的,內(nèi)容是:SUB過(guò)程與程序流程控制語(yǔ)句。
一、Sub過(guò)程
★ 概念:一個(gè)過(guò)程就是一組完成所需操作的VBA代碼的組合
★VBA過(guò)程主要包括“Sub過(guò)程”和“Funtion過(guò)程”兩種
Sub過(guò)程不可以返回值,F(xiàn)untion過(guò)程可以返回值。
錄制宏就是一個(gè)簡(jiǎn)單的Sub過(guò)程,使用錄制宏功能只能生成Sub過(guò)程的代碼。
Sub過(guò)程的特點(diǎn):
1.以“Sub過(guò)程名()”開(kāi)頭,以“End Sub”結(jié)尾。
2.Sub過(guò)程一般保存在模塊里。
3.Sub過(guò)程不返回結(jié)果—值。
● Sub過(guò)程的聲明:
[ Public | Private ] [ Static ] Sub 過(guò)程名稱([ 參數(shù)1,參數(shù)2,… ] )
[ 語(yǔ)句塊 ]
[ Exit Sub ] ′強(qiáng)制退出Sub過(guò)程
[ 語(yǔ)句塊 ]
End Sub
注:Public — 公共
Private — 私有
Static — 保存變量結(jié)果
● 從一個(gè)過(guò)程執(zhí)行另一個(gè)過(guò)程(過(guò)程的調(diào)用)
1.輸入過(guò)程名稱以及參數(shù),參數(shù)用逗號(hào)隔開(kāi)
過(guò)程名 [參數(shù)1 ,參數(shù)2,...]
2.在過(guò)程名稱以及參數(shù)前使用 Call 關(guān)鍵字,參數(shù)用括號(hào)括起來(lái),并用逗號(hào)隔開(kāi)
Call 過(guò)程名([參數(shù)1,參數(shù)2,...])
3.利用Application對(duì)象的 Run方法
Application.Run 表示過(guò)程名稱的字符串(或字符串變量)[,參數(shù)1 ,參數(shù)2 ,...]
二、判斷與循環(huán)語(yǔ)句
1.選擇結(jié)構(gòu)
使用If…Then…Else語(yǔ)句可以實(shí)現(xiàn)右圖的選擇結(jié)構(gòu)。其執(zhí)行過(guò)程為:判斷給定的條件P,如果為真,執(zhí)行A塊;否則(為假)執(zhí)行B塊。
A: 單分支選擇結(jié)構(gòu)語(yǔ)句If…Then…Else
語(yǔ)句格式:
If 條件 Then
語(yǔ)句1
[ Else 語(yǔ)句2 ]
End If
說(shuō)明:
⑴.“條件”可以是關(guān)系表達(dá)式、邏輯表達(dá)式或數(shù)值表達(dá)式。對(duì)于數(shù)值表達(dá)式,VBA視零為False,而將所有非零值解釋為True。
⑵.當(dāng)條件為真時(shí),執(zhí)行 Then 與Else 之間的語(yǔ)句塊1;重條件為假時(shí),執(zhí)行 Else 后的語(yǔ)句塊2。
⑶.如果沒(méi)有 Else 部分,則將語(yǔ)句塊2視為空操作,即不作任何處理的操作塊。
我的個(gè)人練習(xí)1
計(jì)算分段函數(shù)
y=x+1 (x>=0)
y=1-2x (x<0)
分析:該題列出了兩個(gè)條件x≥0和x<0,在進(jìn)行VBA程序設(shè)計(jì)時(shí),只需要選擇其中的任意一個(gè)。在Excel VBE 窗口新建一模塊,輸入代碼1,然后在Excel工作表建立一窗體按鈕,給指定宏為:計(jì)算.
Sub 計(jì)算()
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、多分支選擇結(jié)構(gòu)If…Then…ElseIf
語(yǔ)法格式
If 條件1 Then
語(yǔ)句塊1
[ ElseIf 條件2 Then
語(yǔ)句塊2
…]
[ Else
語(yǔ)句塊 n+1 ]
End If
用途:當(dāng)需解決的事情有多個(gè)走向時(shí),使用的一種語(yǔ)句。
說(shuō)明:
⑴.Else 和 ElseIf 子句是可選部分,且可以有任意多個(gè) ElseIf子句。
⑵.程序運(yùn)行時(shí),先測(cè)試“條件1”,如果為真,則執(zhí)行 語(yǔ)句塊1,如果為假,則依次測(cè)試每個(gè) ElseIf 部分的條件表達(dá)式,當(dāng)某個(gè) ElseIf 的條件為真時(shí),則執(zhí)行該 語(yǔ)句塊。如果所有條件都為假,則執(zhí)行 Else 部分的語(yǔ)句塊。
⑶.當(dāng)某個(gè)條件為真并執(zhí)行完與之相關(guān)的語(yǔ)句塊后,程序?qū)⒉辉倥袛嗥浜蟮臈l件,而直接執(zhí)行 End If后面的語(yǔ)句。
我的個(gè)人練習(xí)2
某超市五一節(jié)期間進(jìn)行促銷,優(yōu)惠方案如下:
⑴購(gòu)物在80元(含)以上者,按九五折優(yōu)惠
⑵購(gòu)物在150元以上者,按九折優(yōu)惠
⑶購(gòu)物在300元以上者,按八五折優(yōu)惠
⑷購(gòu)物在500元以上者,按八折優(yōu)惠
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:多分支選擇結(jié)構(gòu)Select Case
語(yǔ)法格式
Select Case 測(cè)試條件
Case 表達(dá)式1
語(yǔ)句塊1
[ Case 表達(dá)式2
語(yǔ)句塊2
…]
[ Case Else
其他語(yǔ)句塊]
End Select
說(shuō)明:
⑴“測(cè)試條件”為必要參數(shù),一般為數(shù)值表達(dá)式或字符串表達(dá)式。
⑵Case 子句中的表達(dá)式可以是以下3種情形之一:
●表達(dá)式:如,Case a+b、Case “Excel home”。
●表達(dá)式1 To 表達(dá)式2:Case 100 To 200、Case “a” To “z”。這種形式表示的范圍包含表達(dá)式1和表達(dá)式2的值,且表達(dá)式1的值小于表達(dá)式2。
●Is 關(guān)系運(yùn)算表達(dá)式:如,Case Is >=80。
⑶可以將上述形式組合起來(lái)使用,表達(dá)式之間須用逗號(hào)分隔。如,Case 5,14,30 To 60,80、Case “A” To “z”,它們之間的關(guān)系是“邏輯或”。
個(gè)人練習(xí)3
題目仍是五一超市優(yōu)惠活動(dòng)的題。
Sub 優(yōu)惠()
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、循環(huán)結(jié)構(gòu)
A.For…Next 語(yǔ)句
For…Next語(yǔ)句用來(lái)實(shí)現(xiàn)循環(huán)次數(shù)已知的循環(huán)結(jié)構(gòu)。
語(yǔ)法格式
For 循環(huán)變量=初值 To 終值 [Step 步長(zhǎng)]
語(yǔ)句塊1
[Exit For]
語(yǔ)句塊2
Next [循環(huán)變量]
說(shuō)明:
⑴“循環(huán)變量”為必要參數(shù),是一個(gè)用做循環(huán)計(jì)數(shù)器的數(shù)值型變量。
⑵“步長(zhǎng)”為循環(huán)變量的增量,可以是正數(shù)或負(fù)數(shù),默認(rèn)值為1。當(dāng)步長(zhǎng)為正數(shù)時(shí),初值應(yīng)小于終值;否則,初值應(yīng)大于終值。步長(zhǎng)值絕對(duì)不可為0!否則出現(xiàn)死循環(huán)。
⑶每次循環(huán)后都會(huì)根據(jù)步長(zhǎng)自動(dòng)改變循環(huán)變量的值,并根據(jù)步長(zhǎng)的正負(fù)判斷循環(huán)變量的當(dāng)前值是否在終值內(nèi),若是則執(zhí)行循環(huán)體,否則結(jié)束循環(huán)。
⑷在For和Next之間可以存在一個(gè)或多個(gè)Exit For語(yǔ)句,遇到該語(yǔ)句時(shí)表示退出循環(huán),并執(zhí)行Next之后的語(yǔ)句。Exit For語(yǔ)句一般用在條件判斷語(yǔ)句(如If…Then)中,即當(dāng)滿足給定條件時(shí)退出循環(huán)。
(5)循環(huán)次數(shù)=Int((終值-初值)/2+1)
個(gè)人練習(xí)4
在B3:B12區(qū)域輸出3位能被15整除的前10個(gè)正整數(shù)偶數(shù)。
分析:能被15整除的偶數(shù),條件形式為 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 循環(huán)語(yǔ)句
當(dāng)需要在一個(gè)集合的所有對(duì)象或者一個(gè)數(shù)組的所有元素之間循環(huán)時(shí),使用該語(yǔ)句。
語(yǔ)法格式
For Each 元素變量 In 對(duì)象集合
語(yǔ)句塊
[Exit For]
語(yǔ)句塊
Next 元素變量
示例請(qǐng)看http://t.excelhome.net/thread-2114-1-1.html 我上交的作業(yè)
C、Do While 循環(huán)語(yǔ)句
根據(jù)給定條件決定是否執(zhí)行循環(huán)體內(nèi)的語(yǔ)句。
1、開(kāi)頭判斷循環(huán)條件
語(yǔ)法格式
Do While 條件
循環(huán)體
[ Exit Do]
循環(huán)體
Loop
2、結(jié)尾判斷循環(huán)條件
語(yǔ)法格式
Do
循環(huán)體
[Exit Do]
循環(huán)體
Loop [ While 循環(huán)條件 ]
注:一般使用開(kāi)頭判斷循環(huán)條件。
示例請(qǐng)看http://t.excelhome.net/thread-2114-1-1.html 我上交的作業(yè).
D、Do Until 循環(huán)語(yǔ)句
執(zhí)行循環(huán)體直到條件成立退出循環(huán)
1、開(kāi)頭判斷循環(huán)條件
語(yǔ)法格式
Do [ Until 循環(huán)條件 ]
循環(huán)體
[ Exit Do ]
循環(huán)體
Loop
2、結(jié)尾判斷循環(huán)條件
語(yǔ)法格式
Do
循環(huán)體
[Exit Do]
循環(huán)體
Loop [ Until 循環(huán)條件 ]
注:一般使用開(kāi)頭判斷循環(huán)條件。
聯(lián)系客服