VBA ByRef - Περάστε το επιχείρημα χρησιμοποιώντας τη συνάρτηση Excel VBA ByRef

Επιχειρησιακό επιχείρημα Excel VBA ByRef

Το ByRef στο VBA είναι μια συνάρτηση που ονομάζεται ως αναφορά όπου παρέχουμε μια αναφορά σε τυχόν ορίσματα στον κώδικά μας, όταν κάνουμε προσαρμοσμένες συναρτήσεις και θέλουμε να χρησιμοποιήσουμε την τιμή οποιασδήποτε μεταβλητής που ορίστηκε νωρίτερα πριν από τη συνάρτηση που χρησιμοποιούμε τη συνάρτηση ByRef, η η σύνταξη προς χρήση είναι απλή ως Function Function-Name (ByRef Variable as Data Type).

Χρησιμοποιώντας το Byref, μπορούμε να επισημάνουμε την αρχική τιμή μεταβλητής χωρίς να αλλάξουμε τη μεταβλητή τιμή. Αυτό είναι σαν να μεταβιβάζουμε τη μεταβλητή τιμή απευθείας στη συνάρτηση VBA ή στη συνάρτηση VBA.

Πώς να περάσετε το επιχείρημα χρησιμοποιώντας το VBA ByRef Argument;

Παράδειγμα # 1

Για παράδειγμα, δείτε τον παρακάτω κώδικα VBA.

Κωδικός1:

Υπο Διαδικασία 1 () Dim k As Integer k = 50 Διαδικασία 2 k MsgBox k End Sub

Κωδικός2:

Υπο Διαδικασία 2 (ByRef k As Integer) k = k + 10 End Sub

Στην πρώτη διαδικασία, έχω δηλώσει τη μεταβλητή "k" ως ακέραιο.

Τότε έχω εκχωρήσει την τιμή σε αυτήν τη μεταβλητή ως 50.

Μετά από αυτό, έχω προσθέσει μια νέα γραμμή, δηλαδή

Διαδικασία 2 k

Αυτό είναι το δεύτερο όνομα διαδικασίας. Σε αυτήν τη διαδικασία, έχω δηλώσει τη μεταβλητή μέσα στην παρένθεση ως String in VBA, αλλά έχω χρησιμοποιήσει τη λέξη "ByRef".

ByRef k Ως ακέραιος

Εδώ έχω εκχωρήσει την τιμή της μεταβλητής «k» ως

k = k + 10

Εντάξει, τώρα θα τρέξω τον κωδικό βήμα προς βήμα πατώντας το πλήκτρο F8.

Πατήστε το πλήκτρο F8 δύο φορές και τοποθετήστε έναν κέρσορα στη μεταβλητή "k" για να δείτε την τιμή της μεταβλητής "k".

Εφόσον έχουμε αντιστοιχίσει την τιμή ως 50, δείχνει την τιμή ως 50. Τώρα έχει επισημάνει τη γραμμή Διαδικασία2 k, η οποία είναι το δεύτερο όνομα διαδικασίας.

Εάν πατήσω το πλήκτρο F8 τώρα, θα βγεί από την τρέχουσα διαδικασία και θα μεταβεί στη δεύτερη διαδικασία.

Τώρα, δεδομένου ότι έχουμε χρησιμοποιήσει τη λέξη ByRef, μεταφέρει τη μεταβλητή "k" από την παραπάνω διαδικασία.

Πατήστε το πλήκτρο F8 δύο φορές. Θα επιστρέψει στην προηγούμενη υποδιαδικασία. Εάν παρατηρήσετε στη δεύτερη διαδικασία, έχω εφαρμόσει τον τύπο ως k = k + 10. δηλαδή, η τιμή "k" είναι 50 και στη συνέχεια προσθέτει 10 ακόμη σε αυτό, δηλαδή 60 συνολικά.

Τώρα ο κώδικας εκτελείται στην πρώτη διαδικασία, και σε αυτή τη διαδικασία, η μεταβλητή "k" είναι 50. Αλλά πατήστε το πλήκτρο F8 και δείτε το αποτέλεσμα σε ένα πλαίσιο μηνύματος.

Έχουμε το αποτέλεσμα ως 60 αντί για την προεπιλεγμένη τιμή των 50 σε αυτήν τη διαδικασία.

Ο λόγος για τον οποίο πήραμε 60 επειδή, στη δεύτερη διαδικασία, έχουμε εφαρμόσει το "ByRef", έτσι έφερε το αποτέλεσμα της εξίσωσης (k = k + 10) στην τρέχουσα διαδικασία.

Εδώ η πρώτη τιμή μεταβλητής "k" είναι 50 και στη δεύτερη διαδικασία η τιμή μεταβλητής "k" είναι k + 10, δηλαδή 60, η οποία μεταφέρεται στην πρώτη διαδικασία.

Στην πρώτη διαδικασία η αρχική τιμή της μεταβλητής "k" ήταν 50, οπότε το By Ref άλλαξε την αρχική τιμή από 50 σε 60 εκτελώντας την εξίσωση k = k + 10 δηλαδή, k = 50 +10 = 60.

Παράδειγμα # 2

Τώρα ρίξτε μια ματιά σε ένα ακόμη παράδειγμα.

Κωδικός 1:

Sub P1 () Dim MyNumber ως Long MyNumber = 1 Call Change_ByRef (MyNumber) 'Το MyNumber αλλάζει με τη διαδικασία Change_ByRef MsgBox "Ο αριθμός μου είναι τώρα:" & MyNumber End Sub


Κωδικός 2:

Sub Change_ByRef (ByRef NewNumber όσο καιρό) NewNumber = 14 End Sub

Αυτό λειτουργεί ακριβώς το ίδιο με τον προηγούμενο κώδικα.

Αρχικά, η τιμή της μεταβλητής "MyNumber" είναι 1. Στη συνέχεια καλούμε την παρακάτω διαδικασία με το όνομά της

Αλλαγή κλήσης_ByRef (MyNumber)

Σε αυτήν τη διαδικασία, η τιμή της μεταβλητής είναι 14.

Έτσι, όταν επιστρέφει στην προηγούμενη διαδικασία, θα εκχωρήσει τη νέα τιμή στη μεταβλητή ως 14.

ενδιαφέροντα άρθρα...