Search This Blog

Memahami Named Argumen dan Argumen Optional

Ketika anda memanggil Sub atau Function, anda dapat menambahkan argumen, dalam urutan yang ada pada definisi procedure atau anda dapat memberikan argumen dengan nama tanpa memperhatiakn urutan argumen.

Sebagai contoh, procedure Sub memerlukan tiga argumen:

Sub PassArgs(strName As String, intAge As Integer, dteBirth As Date)
Debug.Print strName, intAge, dteBirth
End Sub

Anda dapat memanggil procedure ini dengan memberikan argumen pada posisi yang tepat, masing-masing dipisahkan oleh tanda koma seperti pada contoh berikut:

PassArgs "Agus", 29, #2-21-69#

Anda juga dapat memanggil procedure ini dengan memberikan named argumen, dipisahkan dengan tanda koma.

PassArgs intAge:=29, dteBirth:=#2/21/69#, strName:="Agus"

Named argument berisi nama argumen diikuti olah tanda titik dua dan samadengan (:=), diikuti nilai argumen.

Named argument khususnya berguna ketika anda memanggil procedure yang mempunyai orgumen optional. Jika anda menggunakan named argument, anda tidak harus menyertakan koma untuk menunjukkan argumen yang hilang. Menggunakan named argument mempermudah untuk melacak argumen mana yang anda lewatkan dan argumen mana yang diabaikan.

Argumen optional diawali dengan keyword optioanl pada definisi procedure. Anda juga dapat menyebutkan nilai default untuk argumen optional pada definisi procedure. Misalnya:

Sub OptionalArgs(strState As String, Optional strCountry As String = "USA")
. . .
End Sub

Ketika anda memanggil procedure dengan argumen optional, anda dapat memilih menyertakan atau tidak menyertakan argumen optional. Jika anda tidak menyertakan argumen optional, maka nilai default akan digunakan.

Procedure berikut mengandung dua argumen optional, variabel varRegion dan varCountry. Function IsMissing menentukan jika optional Variant telah dilewatkan ke procedure.

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

Anda dapat memanggil procedure ini menggunakan named argumen sebagaimana contoh berikut:

OptionalArgs varCountry:="USA", strState:="MD"

OptionalArgs strState:= "MD", varRegion:=5

No comments: