結構化程序設計中基本的3中控制結構:順序結構宴猾,選擇結構,循環(huán)結構叼旋。其中仇哆,最基本的是順序結構,它是后兩種的基礎夫植。
注:代碼中帶有[ ](中括號)的如果沒有特殊說明讹剔,則表示可以不填寫
1.順序結構的輸入\輸出語句
debug.print #在立即窗口中輸出結果,用于調(diào)試
Sub 乘法口訣()
For i = 1 To 9
For j = 1 To i
Debug.Print i; "x"; j; "="; i * j; " ";
Next
Debug.Print
Next
End Sub
inputbox函數(shù)
注意:在跳出的input窗口中輸入的數(shù)據(jù)vba默認是文本格式的详民,所以dim的時候得是string類型
Sub inputinfo()
Title = "輸入個人信息"
'nani = "嘻嘻延欠,我就是來測試一下"
name1 = "請輸入姓名"
age1 = "請輸入年齡"
address1 = "請輸入地址"
strname = InputBox(name1, Title)
age = InputBox(age1, Title)
Address = InputBox(address1, Title)
Debug.Print "姓名: "; strname
Debug.Print "年齡: "; age
Debug.Print "地址: "; Address
End Sub
msgbox函數(shù)
2.分支結構(選擇結構)
if 邏輯表達式 then 語句
IF 邏輯表達式 then
語句1
語句2
……
end if
if 邏輯表達式 then
語句序列1
else
語句序列2
end if
if 邏輯表達式 then
語句序列1
else
語句序列2
end if
if 邏輯表達式1 then
語句序列1
elseif 邏輯表達式2 then
語句序列2
elseif 邏輯表達式3 then
語句序列3
…………
else
語句序列n
end if
select case 測試表達式
case 表達式列表1
語句序列1
case 表達式列表2
語句序列2
……
case else
語句序列n
end select
在以上結構中,首先計算出測試表達式的值沈跨,然后由捎,vba將表達式的值與結構中的每個case的值進行比較,如果相等饿凛,就執(zhí)行與該case語句下面的語句塊狞玛,執(zhí)行完后再跳轉到end select語句后執(zhí)行软驰。
注:“測試表達式”通常是一個數(shù)值型或者字符型的變量。
“表達式列表”可以是一個或幾個值的列表心肪,如果在一個列表中有多個值锭亏,需要用逗號分隔開。
表達式列表可以按照以下幾種情況來書寫:
一些具體取值:如case 10,15,25
A TO B:如 case 10 to 20表示10到20之間的值
IS 比較運算符:如 case is>60 表示所有大于60的值
以上三種情況的混合硬鞍。例如 case 4 to 10,15,is > 20
[圖片上傳中慧瘤。。固该。(1)]
Sub 顯示不及格學生()
Dim i As Integer
For i = 3 To 11
If Sheet1.Cells(i, 2) < 60 Then
Sheet1.Cells(i, 2).Select
Selection.Font.FontStyle = "加粗"
Selection.Font.ColorIndex = 3
End If
Next
End Sub
Sub 根據(jù)身份證號判斷性別()
Dim sid As String, length As Integer, s, sex As String
sid = InputBox("請輸入身份證號: ")
length = Len(sid)
If length <> 15 And length <> 18 Then
MsgBox "身份證號必須是15位數(shù)或者18位數(shù)"
Exit Sub
End If
If length = 15 Then
s = Right(sid, 1)
Else
s = Mid(sid, 17, 1)
End If
If Int(s / 2) = s / 2 Then
sex = "女"
Else
sex = "男"
End If
MsgBox "性別: " + sex
End Sub
[圖片上傳中锅减。。蹬音。(2)]
Sub 評定成績等級()
Dim i As Integer
If Sheet1.Cells(i, 2) < 60 Then
Cells(i, 3) = "E"
ElseIf 60 <= Sheet1.Cells(i, 2) And Sheet1.Cells(i, 2) < 70 Then
Cells(i, 3) = "D"
ElseIf 70 <= Sheet1.Cells(i, 2) And Sheet1.Cells(i, 2) < 80 Then
Cells(i, 3) = "C"
ElseIf 80 <= Sheet1.Cells(i, 2) And Sheet1.Cells(i, 2) < 90 Then
Cells(i, 3) = "B"
Else
Cells(i, 3) = "A"
End If
Next
End Sub
3.循環(huán)結構
do while 邏輯表達式
語句序列1
[exit do]
[語句序列2]
loop
注:在循環(huán)體中上煤,如果有exit do,當執(zhí)行到exit do語句著淆,馬上跳出循環(huán)劫狠,執(zhí)行l(wèi)oop的下一條語句。使用這個循環(huán)結構時可以不知道具體的循環(huán)次數(shù)
do while …… loop:先測試條件永部,如果條件成立独泞,則執(zhí)行循環(huán)體
do …… loop while:先執(zhí)行一遍循環(huán)體,再測試條件苔埋,如果條件成立則執(zhí)行循環(huán)體
do …… loop until:先執(zhí)行一遍循環(huán)體懦砂,再測試條件,如果條件不成立則執(zhí)行循環(huán)體
do until …… loop:先測試條件组橄,如果條件不成立荞膘,則執(zhí)行循環(huán)體
#密碼驗證
Sub 輸入密碼()
Dim password As String '輸入的密碼
Dim i As Integer '輸入密碼的次數(shù),規(guī)定最多3次
Do While i < 3
password = InputBox("請輸入密碼", "信息管理系統(tǒng)")
If password = "123456" Then '正確密碼:123456
Exit Do
Else
MsgBox "請輸入正確密碼"
End If
i = i + 1
Loop
If i >= 3 Then
MsgBox "非法用戶玉工,系統(tǒng)將退出"
Application.Quit '退出excel
Else
MsgBox "歡迎使用本系統(tǒng)"
End If
End Sub
如果知道具體的循環(huán)次數(shù)羽资,最好使用以下結構:
for 循環(huán)變量 = 初始值 to 終值 [step 步長值]
語句序列1
[exit for]
[語句序列2]
next [循環(huán)變量]
注:步長值可正可負,如果步長值為正遵班,則初始值必須小于終值屠升;如果步長值為負,則初始值必須大于終值狭郑。如果沒有設置step腹暖,則步長默認為1
循環(huán)次數(shù) = [(終值-初始值)/步長值] + 1 #這里的中括號表示取整
#生成ASCII碼表
Sub 生成ascii()
Dim i As Integer, a As Integer
i = 3
For a = 32 To 126
Sheet2.Cells(i, 1) = a
Sheet2.Cells(i, 2) = Chr(a)
i = i + 1
Next
End Sub
for each 元素 in 對象集合
[語句序列1]
[exit for]
[語句序列2]
next
說明:對對象集合中的每一個元素執(zhí)行一次循環(huán)體。exit for 經(jīng)常在條件判斷之后使用翰萨,例如 if …… then
# 隨意選取的區(qū)域的值之和
Sub 求和()
Dim i
Dim a As Long
For Each i In Selection
If IsNumeric(i.Value) Then
a = a + i.Value
End If
Next
MsgBox "所選區(qū)域的值之和為: " & a
End Sub