VBA ByRef

Argumen Fungsi Excel VBA ByRef

ByRef dalam VBA adalah fungsi yang disebut sebagai rujukan di mana kami memberikan rujukan kepada sebarang argumen dalam kod kami, ketika kami membuat fungsi khusus dan kami ingin menggunakan nilai mana-mana pemboleh ubah yang ditentukan sebelumnya sebelum fungsi yang kami gunakan fungsi ByRef, sintaks untuk digunakan semudah fungsi fungsi-nama (ByRef Variable as Data Type).

Dengan menggunakan Byref kita dapat menunjukkan nilai pemboleh ubah asal tanpa mengubah nilai pemboleh ubah. Ini seperti menyampaikan nilai pemboleh ubah secara langsung ke subproses atau fungsi VBA.

Bagaimana cara Lulus Argument menggunakan VBA ByRef Argument?

Anda boleh memuat turun Templat VBA ByRef Excel ini di sini - Templat VBA ByRef Excel

Contoh # 1

Sebagai contoh lihat kod VBA di bawah.

Kod1:

 Sub Prosedur1 () Dim k Sebagai Integer k = 50 Prosedur2 k MsgBox k Akhir Sub 

Kod2:

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

Pada prosedur pertama, saya telah menyatakan pemboleh ubah "k" sebagai Integer.

Kemudian saya telah memberikan nilai pada pemboleh ubah ini sebagai 50.

Selepas itu saya telah menambah baris baru iaitu

Prosedur2 k

Ini adalah nama prosedur kedua. Dalam prosedur ini, saya telah menyatakan pemboleh ubah dalam kurungan sebagai String in VBA tetapi saya telah menggunakan perkataan "ByRef".

 ByRef k Sebagai Integer 

Di sini saya telah menetapkan nilai pemboleh ubah "k" sebagai

k = k + 10

Ok, sekarang saya akan menjalankan kod langkah demi langkah dengan menekan kekunci F8.

Tekan kekunci F8 dua kali dan letakkan kursor pada pemboleh ubah "k" untuk melihat nilai pemboleh ubah "k".

Oleh kerana kami telah menetapkan nilainya sebagai 50, itu menunjukkan nilainya sebagai 50. Sekarang ia telah menyerlahkan garis Prosedur2 k yang merupakan nama prosedur kedua.

Sekiranya saya menekan kekunci F8 sekarang ia akan keluar dari prosedur semasa dan pergi ke prosedur kedua.

Sekarang kerana kita telah menggunakan kata ByRef, ia membawa nilai "k" pemboleh ubah dari prosedur di atas.

Tekan kekunci F8 dua kali, ia akan kembali ke subproses sebelumnya. Sekiranya anda perhatikan dalam prosedur kedua, saya telah menggunakan formula sebagai k = k + 10. iaitu nilai "k" adalah 50 maka tambah 10 lebih banyak lagi iaitu 60 secara keseluruhan.

Sekarang kod ini berjalan pada prosedur pertama dan dalam prosedur ini pemboleh ubah nilai "k" adalah 50. Tetapi tekan kekunci F8 dan lihat hasilnya di kotak mesej.

Kami mendapat hasilnya sebagai 60 dan bukannya nilai lalai 50 dalam prosedur ini.

Sebab mengapa kami mendapat 60 kerana dalam prosedur kedua kami telah menerapkan "ByRef" jadi, ia membawa hasil persamaan (k = k + 10) ke prosedur saat ini.

Di sini nilai pertama "k" pemboleh ubah adalah 50 dan pada prosedur kedua pemboleh ubah nilai "k" adalah k + 10 iaitu 60 yang dibawa ke prosedur pertama.

Pada prosedur pertama nilai asal pemboleh ubah "k" adalah 50, oleh itu oleh Ref telah mengubah nilai asal dari 50 menjadi 60 dengan melaksanakan persamaan k = k + 10 iaitu k = 50 +10 = 60.

Contoh # 2

Sekarang lihat satu lagi contoh.

Kod 1:

 Sub P1 () Dim MyNumber Selagi MyNumber = 1 Call Change_ByRef (MyNumber) 'MyNumber diubah dengan prosedur Change_ByRef MsgBox "Nombor Saya sekarang:" & MyNumber End Sub 

Kod 2:

 Sub Change_ByRef (ByRef NewNumber Selagi) NewNumber = 14 End Sub 

Ini berfungsi sama seperti kod sebelumnya.

Pada mulanya, nilai pemboleh ubah "MyNumber" adalah 1. Kemudian kita memanggil prosedur di bawah dengan namanya

 Tukar Panggilan_ByRef (MyNumber)

Dalam prosedur itu, nilai pemboleh ubah adalah 14.

Jadi, apabila kembali ke prosedur sebelumnya, ia akan memberikan nilai baru kepada pemboleh ubah sebagai 14.