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;

Μπορείτε να κατεβάσετε αυτό το Πρότυπο VBA ByRef Excel εδώ - Πρότυπο VBA ByRef Excel

Παράδειγμα # 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.


$config[zx-auto] not found$config[zx-overlay] not found