Έγραψα τον ακόλουθο κώδικα:
Function find_results_idle()
Public iRaw As Integer
Public iColumn As Integer
iRaw = 1
iColumn = 1
Και λαμβάνω το μήνυμα σφάλματος:
"Άκυρο χαρακτηριστικό σε Sub ή Function",
Ξέρετε τι έκανα λάθος;
Προσπάθησα να χρησιμοποιήσω το Global
αντί του Public
, αλλά είχα το ίδιο πρόβλημα.
Προσπάθησα να δηλώσω την ίδια τη συνάρτηση ως Public
, αλλά και αυτό δεν έφερε αποτέλεσμα.
Τι πρέπει να κάνω για να δημιουργήσω την παγκόσμια μεταβλητή;
Αυτή είναι μια ερώτηση σχετικά με το scope.
Αν θέλετε οι μεταβλητές να διαρκούν μόνο όσο διαρκεί η συνάρτηση, χρησιμοποιήστε Dim
(συντομογραφία για Dimension) μέσα στη συνάρτηση ή το sub για να δηλώσετε τις μεταβλητές:
Function AddSomeNumbers() As Integer
Dim intA As Integer
Dim intB As Integer
intA = 2
intB = 3
AddSomeNumbers = intA + intB
End Function
'intA and intB are no longer available since the function ended
Μια παγκόσμια μεταβλητή (όπως τόνισε ο SLaks) δηλώνεται έξω από τη συνάρτηση χρησιμοποιώντας τη λέξη-κλειδί Public
. Αυτή η μεταβλητή θα είναι διαθέσιμη κατά τη διάρκεια της ζωής της τρέχουσας εφαρμογής σας. Στην περίπτωση του Excel, αυτό σημαίνει ότι οι μεταβλητές θα είναι διαθέσιμες όσο το συγκεκριμένο βιβλίο εργασίας του Excel είναι ανοιχτό.
Public intA As Integer
Private intB As Integer
Function AddSomeNumbers() As Integer
intA = 2
intB = 3
AddSomeNumbers = intA + intB
End Function
'intA and intB are still both available. However, because intA is public, '
'it can also be referenced from code in other modules. Because intB is private,'
'it will be hidden from other modules.
Μπορείτε επίσης να έχετε μεταβλητές που είναι προσβάσιμες μόνο μέσα σε μια συγκεκριμένη ενότητα (ή κλάση) δηλώνοντάς τες με τη λέξη-κλειδί Private
.
Αν κατασκευάζετε μια μεγάλη εφαρμογή και αισθάνεστε την ανάγκη να χρησιμοποιήσετε παγκόσμιες μεταβλητές, θα σας συνιστούσα να δημιουργήσετε μια ξεχωριστή ενότητα μόνο για τις παγκόσμιες μεταβλητές σας. Αυτό θα σας βοηθήσει να τις παρακολουθείτε σε ένα μέρος.