Perbedaan Parameter ByRef dan ByVal Pada VBA

Perbedaan Byref dan ByVal

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

ByVal merupakan sebuah cara melewatkan nilai dari sebuah Argument ke dalam Procedure dengan melewatkan Alamatnya. Dengan ByVal prosedur hanya diizinkan untuk mengakses salinan dari variabel . Perubahan pada argumen dalam prosedur tidak berakibat kepada variabel aslinya

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

ByRef merupakan sebuah cara melewatkan nilai dari sebuah Argument ke dalam Procedure dengan melewatkan Nilainya. Dengan ByRef prosedur diijinkan untuk mengakses variabel sesungguhnya. Perubahan pada argumen dalam prosedur akan berakibat kepada variabel aslinya

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.

Menggunakan ByVal

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

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.

Be the first to comment

Leave a Reply

Your email address will not be published.


*