乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Excel VBA入門(mén)(六)過(guò)程和函數(shù)

       刮骨劍 2018-12-26

      前面講過(guò),VBA代碼有兩種組織形式,一種就是過(guò)程(前面的示例中都在使用),另一種就是函數(shù)。其實(shí)過(guò)程和函數(shù)有很多相同之處,除了使用的關(guān)鍵字不同之外,還有不同的是:

      • 函數(shù)有返回值,過(guò)程沒(méi)有
      • 函數(shù)可以在Excel表格中像一般的Excel函數(shù)那樣使用,但過(guò)程不可以
      • 過(guò)程可以指定給Excel表格中的按鈕或者圖片等對(duì)象,但是函數(shù)不可以
      • 函數(shù)只能在被調(diào)用時(shí)執(zhí)行,比如在過(guò)程中調(diào)用,或者在另一個(gè)函數(shù)中調(diào)用,或者在Excel表格中調(diào)用。但不能直接執(zhí)行,而過(guò)程是可以的

      雖然可以把所有代碼都放在一個(gè)過(guò)程,或者一個(gè)函數(shù)里面,但是這樣會(huì)使代碼難以維護(hù),特別是非常不便于其他人查看修改。而有時(shí)一些重復(fù)性的代碼,也應(yīng)該把它們獨(dú)立出去,作為一個(gè)子過(guò)程或子函數(shù)來(lái)組織。使用子過(guò)程和子函數(shù)的目的,就是為了便于組織代碼、便于維護(hù)。

      1. 過(guò)程 Sub

      過(guò)程以Sub開(kāi)頭,End Sub結(jié)束,過(guò)程中需要執(zhí)行的代碼放在中間。格式如下:

      Sub 過(guò)程名()
          ' 需要在過(guò)程中執(zhí)行的代碼
      End Sub

      過(guò)程名后面的括號(hào)是必須的,過(guò)程可以帶參數(shù),就放置在括號(hào)里面,稍后會(huì)有說(shuō)明。

      過(guò)程示例:

      Sub test()
          Debug.Print "Hello"
      End Sub

      2. 函數(shù) Function

      與過(guò)程類似,函數(shù)的格式如下:

      Function 函數(shù)名(參數(shù)1, 參數(shù)2, ...) As 數(shù)據(jù)類型
          ' 需要在函數(shù)中執(zhí)行的代碼
          函數(shù)名 = 函數(shù)執(zhí)行后的結(jié)果
      End Function

      函數(shù)名后面的括號(hào)是必須的,函數(shù)通常都帶有參數(shù),放置在括號(hào)里面。函數(shù)也可以不帶參數(shù),但這種情況下的函數(shù)通常沒(méi)什么意義。

      括號(hào)后面的 As 數(shù)據(jù)類型 雖然并不是必須的,但是我強(qiáng)烈建議加上。因?yàn)楹瘮?shù)通常都需要有返回值,這個(gè)數(shù)據(jù)類型就表示著返回值的數(shù)據(jù)類型。

      函數(shù)體最后通常都帶有一條返回值語(yǔ)句,把函數(shù)執(zhí)行的結(jié)果賦值給函數(shù)名,就可以在調(diào)用這個(gè)函數(shù)的地方得到這個(gè)函數(shù)的執(zhí)行結(jié)果。這個(gè)返回結(jié)果的數(shù)據(jù)類型應(yīng)該與函數(shù)名后面As的數(shù)據(jù)類型一致,否則可能會(huì)出錯(cuò)。

      函數(shù)示例:

      Function my_sum(n1 as Integer, n2 as Integer) As Integer
          Dim s As Integer
          s = n1 + n2
          my_sum = s
      End Function

      上例中定義了一個(gè)名為my_sum的函數(shù),它接受兩個(gè)類型為Integer的參數(shù),并且返回值是Integer類型。在函數(shù)內(nèi)部計(jì)算了這兩個(gè)參數(shù)相加的和,并把這個(gè)和作為返回值賦給my_sum??梢酝ㄟ^(guò)調(diào)用這個(gè)函數(shù),并傳遞相應(yīng)的參數(shù),獲得它的返回值。

      定義函數(shù)后,就可以在VBA中的過(guò)程,或者其它函數(shù),或者在Excel表格中使用這個(gè)函數(shù)了。

      在Excel表格中使用:

      在VBA過(guò)程中使用:

      再次強(qiáng)調(diào),函數(shù)是不能直接執(zhí)行的。上例中,如果試圖把鼠標(biāo)光標(biāo)放在my_sum函數(shù)中,再按F8,或者點(diǎn)擊工具欄中的執(zhí)行按鈕,都不會(huì)執(zhí)行這個(gè)函數(shù),而是會(huì)彈出一個(gè)運(yùn)行宏的選擇對(duì)話框,而在這個(gè)對(duì)話框中,是沒(méi)有任何函數(shù)可供選擇的,只有過(guò)程:

      3. 過(guò)程和函數(shù)的調(diào)用

      前面說(shuō)過(guò),過(guò)程和函數(shù),都可以是被相互調(diào)用的。

      3.1 過(guò)程的調(diào)用

      格式1:

      Call 過(guò)程名

      格式2:

      Call 過(guò)程名(參數(shù)1, 參數(shù)2, ...)

      如果過(guò)程不帶參數(shù),那么可以使用第1種格式,過(guò)程名后面不需要括號(hào)

      如果過(guò)程帶有參數(shù),則要按照參數(shù)的順序依次把參數(shù)寫(xiě)到過(guò)程名后面的括號(hào)中。即使用第2種格式。

      3.2 函數(shù)的調(diào)用

      函數(shù)的調(diào)用在本章第2節(jié)中有示例。函數(shù)的調(diào)用通常會(huì)在調(diào)用時(shí)把其賦值給一個(gè)變量,以獲取函數(shù)返回值。

      Sub test()
          Dim s As Integer
          s = my_sum(5, 5)
          Debug.Print s
      End Sub
      Function my_sum(n1 As Integer, n2 As Integer) As Integer
          Dim s As Integer
          s = n1 + n2
          my_sum = s
      End Function

      這里應(yīng)該提出的是,函數(shù)應(yīng)當(dāng)要有返回值的,因?yàn)槿绻恍枰祷刂?,那就?yīng)該直接使用過(guò)程而不是函數(shù)了。

      4. 參數(shù)的使用

      參數(shù)和使用對(duì)于過(guò)程和函數(shù)都是一樣的。所以本節(jié)的內(nèi)容對(duì)過(guò)程和函數(shù)都適用。

      參數(shù)可分為可選參數(shù)和必選參數(shù)兩種。必選參數(shù)在調(diào)用(過(guò)程或函數(shù)時(shí))必須加上,否則會(huì)報(bào)錯(cuò)。可選參數(shù)則可寫(xiě)可不寫(xiě)。默認(rèn)是必選參數(shù),可選參數(shù)在定義時(shí)用Optional關(guān)鍵字聲明,并且可選參數(shù)必須放在參數(shù)列表的最后面。

      4.1 必選參數(shù)

      必選參數(shù)在定義時(shí)放置在過(guò)程或函數(shù)名后面的括號(hào)中,格式為:

      參數(shù)名 As 參數(shù)類型

      如:

      Sub sub_test(s As String)
          Debug.Print s
      End Sub

      在調(diào)用時(shí),必須傳入?yún)?shù):

      Sub test()
          Call sub_test("hello")
      End Sub

      4.2 可選參數(shù)

      格式與必選參數(shù)類似,只是在參數(shù)名前面用Optional聲明參數(shù)是可選的。

      Optional 參數(shù)名 As 參數(shù)類型

      如:

      Sub sub_test(Optional s As String)
          Debug.Print s
      End Sub

      在調(diào)用上述過(guò)程時(shí),可以不傳入?yún)?shù),此時(shí)則不會(huì)輸出任何東西,也不會(huì)報(bào)錯(cuò),因?yàn)閰?shù)是可選的。如果傳入了參數(shù),則會(huì)輸出這個(gè)參數(shù)。

      可選參數(shù)還可以設(shè)置默認(rèn)值,即如果在調(diào)用時(shí)不顯式傳入這個(gè)參數(shù)的話,那么就使用定義時(shí)所使用的值。如下過(guò)程:

      Sub sub_test(Optional s As String = "Hello, World")
          Debug.Print s
      End Sub

      帶參數(shù)調(diào)用

      Sub test()
          Call sub_test("I am a boy")
      End Sub

      輸出:I am a boy

      不帶參數(shù)調(diào)用

      Sub test()
          Call sub_test
      End Sub

      輸出:Hello, World

      4.3 同時(shí)使用可選參數(shù)與必選參數(shù)

      此時(shí)可選參數(shù)必須放在最后

      Sub sub_test(var As Integer, Optional s As String = "Hello, World")
          Debug.Print var
          Debug.Print s
      End Sub

      只傳入必選參數(shù)

      Sub test()
          Call sub_test(50)
      End Sub

      輸出:

      50

      Hello, World

      同時(shí)傳入可選參數(shù)與必選參數(shù)

      Sub test()
         Call sub_test(50, "Hi, Meinv")
      End Sub

      輸出:

      50

      Hi, Meinv


      本系列教程其它文章

      Excel VBA 入門(mén)(零)
      Excel VBA入門(mén)(一)數(shù)據(jù)類型
      Excel VBA入門(mén)(二)數(shù)組和字典
      Excel VBA入門(mén)(三) 流程控制1-條件選擇
      Excel VBA入門(mén)(四)流程控制2-循環(huán)控制
      Excel VBA入門(mén)(五)Excel對(duì)象操作
      Excel VBA入門(mén)(六)過(guò)程和函數(shù)
      Excel VBA入門(mén)(七)注釋、宏按鈕及錯(cuò)誤處理
      Excel VBA入門(mén)(八)單元格邊框
      Excel VBA入門(mén)(九)操作工作薄

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多