數(shù)據(jù)處理VBA篇:程序控制結構

結構化程序設計中基本的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
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脏答,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌以蕴,老刑警劉巖糙麦,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丛肮,居然都是意外死亡,警方通過查閱死者的電腦和手機魄缚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門宝与,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人冶匹,你說我怎么就攤上這事习劫。” “怎么了嚼隘?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵诽里,是天一觀的道長。 經(jīng)常有香客問我飞蛹,道長谤狡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任卧檐,我火速辦了婚禮墓懂,結果婚禮上,老公的妹妹穿的比我還像新娘霉囚。我一直安慰自己捕仔,他們只是感情好,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布盈罐。 她就那樣靜靜地躺著榜跌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪盅粪。 梳的紋絲不亂的頭發(fā)上钓葫,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音湾揽,去河邊找鬼瓤逼。 笑死,一個胖子當著我的面吹牛库物,可吹牛的內(nèi)容都是我干的霸旗。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼戚揭,長吁一口氣:“原來是場噩夢啊……” “哼诱告!你這毒婦竟也來了?” 一聲冷哼從身側響起民晒,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤精居,失蹤者是張志新(化名)和其女友劉穎锄禽,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體靴姿,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡沃但,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了佛吓。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宵晚。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖维雇,靈堂內(nèi)的尸體忽然破棺而出淤刃,到底是詐尸還是另有隱情,我是刑警寧澤吱型,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布逸贾,位于F島的核電站,受9級特大地震影響津滞,放射性物質發(fā)生泄漏铝侵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一据沈、第九天 我趴在偏房一處隱蔽的房頂上張望哟沫。 院中可真熱鬧,春花似錦锌介、人聲如沸嗜诀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽隆敢。三九已至,卻和暖如春崔慧,著一層夾襖步出監(jiān)牢的瞬間拂蝎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工惶室, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留温自,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓皇钞,卻偏偏與公主長得像悼泌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子夹界,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容