VBA ByRef

Argumen Fungsi Excel VBA ByRef

ByRef di VBA adalah fungsi yang disebut sebagai referensi di mana kami memberikan referensi ke argumen apa pun dalam kode kami, ketika kami membuat fungsi kustom dan kami ingin menggunakan nilai variabel apa pun yang didefinisikan sebelumnya sebelum fungsi kami menggunakan fungsi ByRef, sintaks yang digunakan sederhana seperti Function Function-Name (Variabel ByRef sebagai Tipe Data).

Dengan menggunakan Byref kita bisa menunjukkan nilai variabel asli tanpa mengubah nilai variabel. Ini seperti meneruskan nilai variabel langsung ke subprocedure VBA atau fungsi VBA.

Bagaimana cara Meneruskan Argumen menggunakan VBA ByRef Argument?

Anda dapat mendownload Template VBA ByRef Excel ini di sini - Template VBA ByRef Excel

Contoh 1

Untuk contoh lihat kode VBA di bawah ini.

Kode1:

 Sub Prosedur 1 () Dim k As Integer k = 50 Prosedur2 k MsgBox k End Sub 

Kode2:

 Sub Prosedur2 (ByRef k Sebagai Integer) k = k + 10 End Sub 

Pada prosedur pertama, saya telah mendeklarasikan variabel “k” sebagai Integer.

Kemudian saya telah menetapkan nilai variabel ini sebagai 50.

Setelah itu saya telah menambahkan baris baru yaitu

Prosedur2 k

Ini adalah nama prosedur kedua. Dalam prosedur ini, saya telah mendeklarasikan variabel dalam tanda kurung sebagai String di VBA tetapi saya telah menggunakan kata "ByRef".

 ByRef k Sebagai Integer 

Di sini saya telah menetapkan nilai variabel "k" sebagai

k = k + 10

Ok, sekarang saya akan menjalankan kode langkah demi langkah dengan menekan tombol F8.

Tekan tombol F8 dua kali lagi dan letakkan kursor pada variabel "k" untuk melihat nilai variabel "k".

Karena kita telah menetapkan nilai sebagai 50, itu menunjukkan nilai sebagai 50. Sekarang telah menyorot garis Prosedur2 k yang merupakan nama prosedur kedua.

Jika saya menekan tombol F8 sekarang, itu akan keluar dari prosedur saat ini dan melanjutkan ke prosedur kedua.

Sekarang karena kita telah menggunakan kata ByRef itu membawa nilai variabel "k" dari prosedur di atas.

Tekan tombol F8 dua kali untuk kembali ke subprocedure sebelumnya. Jika Anda perhatikan dalam prosedur kedua saya telah menerapkan rumus sebagai k = k + 10. yaitu nilai "k" adalah 50 lalu tambahkan 10 lagi, yaitu total 60.

Sekarang kode berjalan di prosedur pertama dan dalam prosedur ini nilai variabel "k" adalah 50. Tapi tekan tombol F8 dan lihat hasilnya di kotak pesan.

Kami mendapatkan hasil sebagai 60, bukan nilai default 50 dalam prosedur ini.

Alasan mengapa didapatkan 60 karena pada prosedur kedua kita telah menerapkan “ByRef” sehingga membawa hasil persamaan (k = k + 10) ke prosedur saat ini.

Disini nilai variabel “k” pertama adalah 50 dan pada prosedur kedua nilai “k” adalah k + 10 yaitu 60 yang dibawa ke prosedur pertama.

Pada prosedur pertama nilai orisinal variabel “k” adalah 50, sehingga By Ref merubah nilai awal dari 50 menjadi 60 dengan mengeksekusi persamaan k = k + 10 yaitu k = 50 +10 = 60.

Contoh # 2

Sekarang lihat satu contoh lagi.

Kode 1:

 Sub P1 () Dim MyNumber As Long MyNumber = 1 Panggilan Change_ByRef (MyNumber) 'MyNumber diubah oleh prosedur Change_ByRef MsgBox "Nomor Saya sekarang:" & MyNumber End Sub 

Kode 2:

 Sub Change_ByRef (ByRef NewNumber As Long) NewNumber = 14 End Sub 

Ini bekerja persis sama dengan kode sebelumnya.

Awalnya, nilai variabel "MyNumber" adalah 1. Kemudian kita memanggil prosedur di bawah ini dengan namanya

 Panggil Change_ByRef (MyNumber)

Dalam prosedur tersebut, nilai variabelnya adalah 14.

Jadi, ketika kembali ke prosedur sebelumnya, itu akan menetapkan nilai baru ke variabel sebagai 14.