/ / / Excel VBA ByRef και ByVal

Excel VBA ByRef και ByVal

Μπορείτε να μεταφέρετε τα επιχειρήματα σε μια διαδικασία (λειτουργία ή υποσύνολο) με παραπομπή ή κατά αξία. Από προεπιλογή, Excel VBA διαβιβάζει επιχειρήματα με παραπομπή. Όπως πάντα, θα χρησιμοποιήσουμε ένα εύκολο παράδειγμα για να καταστήσουμε τα πράγματα πιο ξεκάθαρα.

Τοποθετήστε ένα κουμπί εντολής στο φύλλο εργασίας σας και προσθέστε τις ακόλουθες γραμμές κώδικα:

Dim x As Integer
x = 10

MsgBox Triple(x)
MsgBox x

Ο κωδικός καλεί τη λειτουργία Triple. Είναι το αποτέλεσμα του δεύτερου MsgBox που μας ενδιαφέρει. Οι λειτουργίες πρέπει να τοποθετηθούν σε μια ενότητα.

1. Ανοίξτε τον Επεξεργαστή Visual Basic και κάντε κλικ στην επιλογή Εισαγωγή, Ενότητα.

2. Προσθέστε τις ακόλουθες γραμμές κώδικα:

Function Triple(ByRef x As Integer) As Integer

x = x * 3
Triple = x

End Function

Αποτέλεσμα όταν κάνετε κλικ στο κουμπί εντολών στο φύλλο:

Αποτέλεσμα ByRef

Αποτέλεσμα ByRef

3. Αντικαταστήστε το ByRef με το ByVal.

Function Triple(ByVal x As Integer) As Integer

x = x * 3
Triple = x

End Function

Αποτέλεσμα όταν κάνετε κλικ στο κουμπί εντολών στο φύλλο:

Αποτέλεσμα ByVal

Αποτέλεσμα ByVal

Εξήγηση: Όταν περάσαμε τα επιχειρήματα με παραπομπή, αναφερόμαστε στην αρχική τιμή. Η τιμή του x (η αρχική τιμή) αλλάζει στη συνάρτηση. Ως αποτέλεσμα, το δεύτερο MsgBox εμφανίζει τιμή 30. Όταν περάσαμε τα επιχειρήματα με βάση την αξία, περνάμε ένα αντίγραφο στη λειτουργία. Η αρχική τιμή δεν αλλάζει. Ως αποτέλεσμα, το δεύτερο MsgBox εμφανίζει τιμή 10 (η αρχική τιμή).

Επίσης διαβάστε: