Optional Parameter

Dalam pemrograman VBA (Visual Basic for Applications), sering kali kita membuat procedure atau function yang dapat menerima berbagai macam input. Namun, tidak semua parameter selalu harus diisi oleh pengguna. Untuk mengatasi kebutuhan tersebut, VBA menyediakan fitur Optional Parameter.

Optional Parameter memungkinkan sebuah prosedur atau fungsi dipanggil tanpa harus mengisi semua parameter yang tersedia. Fitur ini membuat kode menjadi lebih fleksibel, mudah digunakan, dan lebih mudah dipelihara.

Pengertian Optional Parameter

Optional Parameter adalah parameter yang tidak wajib diberikan nilainya saat sebuah prosedur (Sub) atau fungsi (Function) dipanggil.

Parameter opsional dideklarasikan menggunakan kata kunci Optional.

Sintaks Dasar

Sub NamaProsedur(Optional NamaParameter As TipeData = NilaiDefault)End Sub

atau

Function NamaFungsi(Optional NamaParameter As TipeData = NilaiDefault) As TipeDataEnd Function

Contoh Penggunaan pada Sub Procedure

Misalkan kita ingin menampilkan pesan dengan nama pengguna yang bersifat opsional.

Sub TampilkanPesan(Optional Nama As String = "Pengguna")    MsgBox "Selamat datang, " & NamaEnd Sub

Pemanggilan

TampilkanPesan

Hasil:

Selamat datang, Pengguna

Jika parameter diberikan:

TampilkanPesan "Andi"

Hasil:

Selamat datang, Andi

Contoh Penggunaan pada Function

Function HitungDiskon(Harga As Double, Optional PersenDiskon As Double = 10) As Double    
HitungDiskon = Harga - (Harga * PersenDiskon / 100)
End Function

Pemanggilan

Debug.Print HitungDiskon(100000)

Output:

90000

Karena diskon default adalah 10%.

Jika ingin menggunakan diskon berbeda:

Debug.Print HitungDiskon(100000, 20)

Output:

80000

Aturan Penting Optional Parameter

1. Harus Diletakkan di Akhir Daftar Parameter

Parameter opsional harus berada setelah parameter wajib.

Salah

Sub Test(Optional Nama As String = "", Umur As Integer)End Sub

Kode di atas akan menghasilkan error.

Benar

Sub Test(Umur As Integer, Optional Nama As String = "")End Sub

2. Nilai Default Harus Konstan

Nilai default harus berupa konstanta yang diketahui saat kompilasi.

Benar

Optional Jumlah As Integer = 10

Salah

Optional Tanggal As Date = Now()

Karena Now() bukan nilai konstan.

3. Tidak Semua Tipe Data Bisa Memiliki Nilai Default Kompleks

Untuk objek, biasanya digunakan tipe Variant.

Contoh:

Sub Cetak(Optional Data As Variant)
    If IsMissing(Data) Then
        MsgBox "Tidak ada data"
    Else
        MsgBox Data
    End If
End Sub

Menggunakan IsMissing

Fungsi IsMissing() digunakan untuk memeriksa apakah parameter opsional bertipe Variant diberikan atau tidak.

Contoh

Sub Tampilkan(Optional Nama As Variant)
    If IsMissing(Nama) Then
        MsgBox "Nama tidak diisi"
    Else
        MsgBox "Nama: " & Nama
    End If
End Sub

Pemanggilan:

Tampilkan

Output:

Nama tidak diisi

Pemanggilan:

Tampilkan "Budi"

Output:

Nama: Budi

Catatan

IsMissing() hanya dapat digunakan pada parameter bertipe Variant.

Optional Parameter dengan Banyak Parameter

Sub BuatLaporan( _
    NamaFile As String, _
    Optional FormatFile As String = "PDF", _
    Optional CetakOtomatis As Boolean = False)
    
    MsgBox "File: " & NamaFile & vbCrLf & _
           "Format: " & FormatFile & vbCrLf & _
           "Cetak: " & CetakOtomatis
End Sub

Pemanggilan:

BuatLaporan "LaporanPenjualan"

Hasil:

File: LaporanPenjualanFormat: PDFCetak: False

Pemanggilan:

BuatLaporan "LaporanPenjualan", "Excel", True

Hasil:

File: LaporanPenjualanFormat: ExcelCetak: True

Keuntungan Menggunakan Optional Parameter

1. Kode Lebih Fleksibel

Pengguna dapat memberikan parameter sesuai kebutuhan.

2. Mengurangi Jumlah Procedure

Tanpa parameter opsional, sering kali kita harus membuat beberapa prosedur yang mirip.

Contoh tanpa Optional:

Sub Cetak()

End Sub

Sub CetakDenganJudul(Judul As String)

End Sub

Dengan Optional:

Sub Cetak(Optional Judul As String = "")

End Sub

3. Mempermudah Pemeliharaan Kode

Perubahan logika cukup dilakukan pada satu prosedur.

Studi Kasus

Misalkan kita membuat fungsi untuk menghitung pajak.

Function HitungPajak( _
    Nilai As Double, _
    Optional Tarif As Double = 11) As Double
    HitungPajak = Nilai * Tarif / 100
End Function

Penggunaan:

Debug.Print HitungPajak(1000000)

Output:

110000

Dengan tarif khusus:

Debug.Print HitungPajak(1000000, 12)

Output:

120000

Leave a Reply

Your email address will not be published. Required fields are marked *

Chat WhatsApp
WhatsApp