VBA ByRef - Meneruskan Argumen Menggunakan Fungsi ByRef Excel VBA

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 menunjuk ke 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?

Contoh 1

Misalnya, lihat kode VBA di bawah ini.

Kode1:

Sub Prosedur1 () 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 tempatkan kursor pada variabel "k" untuk melihat nilai variabel "k".

Karena kita telah menetapkan nilai sebagai 50, itu menunjukkan nilai sebagai 50. Sekarang telah disorot 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. Ini akan kembali ke sub prosedur sebelumnya. Jika Anda perhatikan pada prosedur kedua, saya telah menerapkan rumus sebagai k = k + 10. yaitu, nilai "k" adalah 50 lalu menambahkan 10 lagi, yaitu 60.

Sekarang kode sedang 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 kita mendapatkan 60 karena pada prosedur kedua kita telah menerapkan “ByRef” sehingga membawa hasil persamaan (k = k + 10) ke prosedur saat ini.

Di sini nilai variabel “k” pertama adalah 50, dan pada variabel 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 () Redupkan 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 memberikan nilai baru ke variabel sebagai 14.

Artikel yang menarik...