Pada saat pembuatan Procedure atau Functions atau pada contoh-contoh yang sudah banyak digunakan, kita akan menemukan 2 Keywords yang menempel pada Parameter Procedure atau Fungsi, yaitu ByVal dan ByRef . Apa sih Fungsi dari penggunaan ByVal dan ByRef ini para Parameter?.
Secara Default pada VBA, Parameters yang kita Kirimkan atau yang kita lewatkan ke Procedure akan Menggunakan ByRef. Sehingga untuk ByRef ini tanpa kita tuliskan pada Parameters akan menggunakan Metode By Reference. Sedangkan ByVal perlu kita tuliskan agar Metode yang digunakan secara ByVal atau By Value.
Perbedaan ByRef dan ByVal
Apa itu ByRef dan apa itu ByVal?, perbedaan keduanya bisa disimak pada penjelasan dibawah ini
Argumen yang dilewatkan dengan ByVal menggunakan 2 sampai dengan 16 bytes dalam prosedur, tergantung pada tipe data argumen tersebut. Tipe data yang lebih besar memerlukan sedikit lebih lama untuk melewatkan ByVal
Argumen yang dilewatkan secara ByRef memerlukan waktu dan jumlah ruang yang sama (4 bytes) dalam sebuah prosedur tanpa memperhatikan tipe data dari argumen-argumen tersebut.
Pembuktian Pada Program (VBA)
Jika teorinya seperti diatas, maka kita buktikan secara program agar lebih terlihat jelas dan semoga lebih mengerti dengan perbedaan dari kedua metode diatas.

Bisa kita lihat diatas, dengan Menggunakan ByVal, Nama tidak terpengaruh dengan perubahan pada Procedure TestRoutine. Variable Nama tetap menggunakan isi dari Procedure Asalnya. Coba perhatikan jika kita menggunakan ByRef

Dengan menggunakan ByRef, Variable nama terpengaruh dengan perubahan pada Procedure pemanggil dan merubah isi dari Varable pada procedure aslinya. Dan jika ByRef nya kita hapus hasilnya akan sama saja, karena secara default jika tidak ada ByVal atau ByRef yang digunakan oleh VBA adalah ByRef.
Leave a Reply