VBA ByRef - Lulus Argumen Menggunakan Fungsi Excel 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 menyerahkan nilai pemboleh ubah terus ke subproses atau fungsi VBA.

Bagaimana cara Lulus Argument menggunakan VBA ByRef Argument?

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 kata "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 kita telah menetapkan nilainya sebagai 50, itu menunjukkan nilainya sebagai 50. Sekarang ia telah menyoroti 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, kata ini 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 menerapkan rumus sebagai k = k + 10. iaitu, nilai "k" adalah 50 kemudian menambahkan 10 lagi pada itu, 60 keseluruhan.

Sekarang kod tersebut dijalankan pada prosedur pertama, dan dalam prosedur ini, nilai "k" pemboleh ubah 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" sehingga 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 "k" nilai 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.

Artikel menarik...