Penggunaan Argument didalam Procedure VBA

Ketika kita membuat suatu procedure (baik jenis Sub ataupun Function), kita bisa menambahkan suatu argument didalam nama procedurenya. Anda dapat menyimpan argument tersebut didalam tanda kurung tutup dan kurung buka seperti contoh berikut ini:

Sub PassArgs(strName As String, intAge As Integer, dteBirth As Date)

    Debug.Print strName, intAge, dteBirth

End Sub

Yang dicetak tebal pada contoh diatas, itulah yang disebut argument. Untuk menjalankan procedure diatas cukup memanggil nama procedure tersebut berikut dengan mengisi nilai-nilai pada argument nya. Lihat contoh berikut:

PassArgs “Mary”, 29, #2-21-69#

Atau bisa juga seperti ini (ditulis dengan nama argument nya dan dipisah dengan tanda koma (,):

 PassArgs intAge:=29, dteBirth:=#2/21/69#, strName:=”Mary”

‘Ingat! Penulisan nilainya harus diawali tanda :=

Penggunaan statement Optional pada Argument

Semua argument diatas wajib diisi. Jika Anda menginginkan suatu argumen boleh diisi ataupun boleh tidak, maka Anda harus menambahkan statement OPTIONAL pada argument tersebut. Contoh:

Sub OptionalArgs(strState As String, Optional strCountry As String = “USA”)

‘Simpan code Anda disini. . .

End Sub

Jika kita menginginkan suatu proses atau tindakan tertentu seandainya suatu argument tidak diisi, maka kita bisa menambahkan statement ISMISSING pada program kita. Contoh:

Sub OptionalArgs(strState As String, Optional varRegion As Variant, _

Optional varCountry As Variant = “USA”)

    If IsMissing(varRegion) And IsMissing(varCountry) Then

        Debug.Print strState

    ElseIf IsMissing(varCountry) Then

        Debug.Print strState, varRegion

    ElseIf IsMissing(varRegion) Then

        Debug.Print strState, varCountry

    Else

        Debug.Print strState, varRegion, varCountry

    End If

End Sub

Penggunaan statement ByVal pada Argument

Semua argument selalu mempunyai nilai dari procedure yang didefinisikan dalam referensinya, kecuali jika Anda memberi pilihan lainnya. Sehingga argument yang Anda miliki selalu mempunyai nilai terakhir dari value yang telah didefiniskan didalam procedure yang Anda buat. Namun dengan menambahkan statement ByVal pada deklarasi argument yang Anda buat, maka argument tersebut memiliki nilai original yang disimpan pada saat procedure Anda dijalankan. Dengan kata lain, statement ByVal membuat nilai yang dihasilkan di copy didalam memori. Mungkin pengertian ini agak rumit dipahami. Untuk mudahnya, perhatikan contoh berikut:

Function Factorial(ByVal MyVar As Integer)

    MyVar = MyVar – 1

    If MyVar = 0 Then

        Factorial = 1

        Exit Function

    End If

    Factorial = Factorial(MyVar) * (MyVar + 1)

End Function

<

p style=”text-align:justify;”>Coba di debug di immediate window dengan mengetik ?Factorial(5) , lalu tekan Enter. Maka nilai yang dihasilkan adalah 120. Jika Anda tidak menambahkan statement ByVal, maka nilai yang dihasilkan adalah 1.

Leave a Reply

%d bloggers like this: