ByVal dan ByRef

Pada materi sebelumnya kita sudah belajar tentang Subrutine dan juga Function. Baik Subutine maupun Function, keduanya bisa menerima sebuah Argumen atau Paremeter.

Dalam pengiriman sebuah parameter, kita bisa menambahkan ByVal atau ByRef pada awal argumen. Ataupun malah bisa tidak digunakan sama sekali.

Mari kita bahas, apa itu ByVal dan ByRef dan kapan menggunakan ByVal dan Kapan menggunakan ByRef

ByVal

Istilah “ByVal” merupakan kependekan dari “By Value”, yang artinya pengiriman hanya berupa nilai ke dalam sebuah prosedur atau fungsi.

Ketika menggunakan kata ByVal untuk sebuah parameter, sebenarnya VBA mengirimkan sebuah salinan nilai dari variabel yang dioperasikan ke dalam prosedur tersebut.

Ini artinya setiap perubahan yang dibuat pada variabel tersebut di dalam prosedur tidak akan mempengaruhi variabel asli di luar prosedur tersebut.

Misalnya, jika memiliki sebuah variabel “nilai” yang bernilai 5 dan kita memanggil prosedur dengan menggunakan ByVal untuk variabel “nilai” sebagai parameter, nilai 5 akan disalin ke dalam prosedur.

Jika nilai variabel di dalam prosedur berubah, misalnya menjadi 10, nilai variabel “nilai” di luar prosedur tetap 5.

Coba kita langsung praktekan menggunakan Script VBA

Pada gambar diatas, bisa kita lihat jika Nilai tidak mengalami Perubahan pada Posisi ke 1 dan ke 3. Nilai berubah hanya pada Function saja.

ByRef

Sementara itu, “ByRef” merupakan singkatan dari “By Reference”, yang berarti pengiriman berupa referensi ke dalam sebuah prosedur atau fungsi.

Ketika menggunakan ByRef untuk sebuah parameter, sebenarnya mengirimkan alamat memori variabel tersebut ke dalam prosedur. Mudahnya sama seperti mengirimkan variable kedalam procedure.

Ini berarti bahwa setiap perubahan yang dilakukan pada variabel di dalam prosedur akan mempengaruhi variabel asli di luar prosedur tersebut.

Misalnya, sama seperti pada contoh diatas, jika menggunakan ByRef maka “Nilai” akan mengalami perubahan

Pada gambar diatas, bisa kita lihat jika Nilai mengalami Perubahan pada Posisi ke 3. Nilai ke 3 berubah karena pada Function terjadi perubahan nilai.

Bagaimana Jika Tidak Menggunakan ByVal atau ByRef

Jika pada parameter didalam Prosedur baik itu Subrutine atau Function tidak menambahkan kata ByVal ataupun ByRef, maka VBA akan menganggap sebagai ByRef.

Ini artinya ByRef adalah nilai default dari pengriman parameter ini. Berarti setiap pengiriman parameter akan dikirimkan berserta alamat memorynya.

coba perhatikan pada script dibawah ini

Menggunakan ByVal atau ByRef ?

Pemilihan antara ByVal dan ByRef tergantung pada kebutuhan spesifik dari script yang sedang ditulis. Jika ingin melindungi nilai variabel asli dari perubahan yang terjadi di dalam prosedur, maka menggunakan ByVal akan menjadi pilihan yang tepat.

Namun, jika ingin mengizinkan prosedur untuk memodifikasi nilai variabel asli, maka menggunakan ByRef adalah solusi yang tepat.

Penting untuk memahami perbedaan antara ByVal dan ByRef dalam VBA, karena penggunaan yang tepat akan membantu memastikan bahwa program yang dibuat berjalan sesuai dengan keinginan dan kebutuhan kita.

Dengan memahami bagaimana kedua konsep ini berinteraksi dengan data, kita dapat menulis kode yang lebih efisien dan efektif.

Leave a Reply

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

Chat WhatsApp
WhatsApp