Χρήση των συναρτήσεων CALL και REGISTER

ΣΗΜΑΝΤΙΚΟ: Προσοχή    Η λανθασμένη επεξεργασία του μητρώου ενδέχεται να προκαλέσει σοβαρή βλάβη στο λειτουργικό σας σύστημα, με αποτέλεσμα να χρειάζεται η επανάληψη της εγκατάστασής του. Η Microsoft δεν μπορεί να εγγυηθεί τη δυνατότητα επίλυσης προβλημάτων που προκύπτουν από την λανθασμένη επεξεργασία του μητρώου. Πριν την επεξεργασία του μητρώου, δημιουργήστε αντίγραφα ασφαλείας των πολύτιμων δεδομένων. Για τις πιο πρόσφατες πληροφορίες σχετικά με τη χρήση και την προστασία του μητρώου του υπολογιστή σας, ανατρέξτε στη Βοήθεια των Microsoft Windows.

Σε αυτό το άρθρο περιγράφεται η σύνταξη τύπου και η χρήση των συναρτήσεων CALL, REGISTER και REGISTER.ID στο Microsoft Excel.

ΣΗΜΕΙΩΣΗ : Οι συναρτήσεις CALL και REGISTER δεν είναι διαθέσιμες στο Excel Online.

Σε αυτό το άρθρο

Περιγραφή

Τύποι δεδομένων

Παρατηρήσεις

Πρόσθετες πληροφορίες για τους τύπους δεδομένων

Τύποι δεδομένων F και G

Τύπος δεδομένων K

Τύπος δεδομένων O

Τύπος δεδομένων Ρ

Τύπος δεδομένων R — Κλήση συναρτήσεων του Microsoft Excel από DLL

Δυναμικές συναρτήσεις και επανάληψη υπολογισμού

Επιτόπια τροποποίηση — Δήλωση συναρτήσεων ως Void

Περιγραφή

Παρακάτω περιγράφονται οι τύποι δεδομένων ορισμάτων και επιστρεφόμενων τιμών που χρησιμοποιούνται από τις συναρτήσεις CALL, REGISTER και REGISTER.ID. Τα ορίσματα και οι επιστρεφόμενες τιμές διαφέρουν ελαφρώς, ανάλογα με το λειτουργικό περιβάλλον και οι διαφορές αυτές αναφέρονται στον πίνακα τύπων δεδομένων.

Αρχή της σελίδας

Τύποι δεδομένων

Στις συναρτήσεις CALL, REGISTER και REGISTER.ID, το όρισμα κείμενο_τύπου καθορίζει τον τύπο δεδομένων της επιστρεφόμενης τιμής, καθώς και τους τύπους δεδομένων όλων των ορισμάτων στη συνάρτηση DLL ή τον πόρο κώδικα. Ο πρώτος χαρακτήρας του ορίσματος κείμενο_τύπου καθορίζει τον τύπο δεδομένων της επιστρεφόμενης τιμής. Οι υπόλοιποι χαρακτήρες υποδεικνύουν τους τύπους δεδομένων όλων των ορισμάτων. Για παράδειγμα, μια συνάρτηση DLL που επιστρέφει έναν αριθμό κινητής υποδιαστολής και δέχεται ως ορίσματα έναν ακέραιο αριθμό και έναν αριθμό κινητής υποδιαστολής χρειάζεται την τιμή "BIB" για το όρισμα κείμενο_τύπου.

Ο παρακάτω πίνακας περιέχει μια πλήρη λίστα των κωδικών τύπων δεδομένων που αναγνωρίζει το Microsoft Excel, μια περιγραφή κάθε τύπου δεδομένων, τον τρόπο διαβίβασης του ορίσματος ή της επιστρεφόμενης τιμής και μια τυπική δήλωση για τον τύπο δεδομένων στη γλώσσα προγραμματισμού C.

Κωδικός

Περιγραφή

Μεταβίβαση ως

Δήλωση C

A

Λογική τιμή
(FALSE = 0, TRUE = 1)

Τιμή

short int

Β

Αριθμός κινητής υποδιαστολής 8 byte IEEE

Τιμή
(Windows)

Αναφορά (Macintosh)

double
(Windows)

double * (Macintosh)

C

Συμβολοσειρά με τερματισμό σε χαρακτήρα null (μέγιστο μήκος συμβολοσειράς = 255)

Αναφορά

char *

D

Συμβολοσειρά με καθορισμό μήκους σε byte (το πρώτο byte περιέχει το μήκος της συμβολοσειράς, μέγιστο μήκος συμβολοσειράς = 255 χαρακτήρες)

Αναφορά

Unsigned char *

E

Αριθμός κινητής υποδιαστολής 8 byte IEEE

Αναφορά

double *

F

Συμβολοσειρά με τερματισμό σε χαρακτήρα null (μέγιστο μήκος συμβολοσειράς = 255 χαρακτήρες)

Αναφορά (επιτόπια τροποποίηση)

char *

G

Συμβολοσειρά με καθορισμό μήκους σε byte (το πρώτο byte περιέχει το μήκος της συμβολοσειράς, μέγιστο μήκος συμβολοσειράς = 255 χαρακτήρες)

Αναφορά (επιτόπια τροποποίηση)

unsigned char *

H

Ακέραιος των 2 byte χωρίς πρόσημο

Τιμή

unsigned short int

I

Ακέραιος των 2 byte με πρόσημο

Τιμή

short int

J

Ακέραιος των 4 byte με πρόσημο

Τιμή

long int

K

Πίνακας

Αναφορά

FP *

L

Λογική τιμή
(FALSE = 0, TRUE = 1)

Αναφορά

short int *

Μ

Ακέραιος των 2 byte με πρόσημο

Αναφορά

short int *

N

Ακέραιος των 4 byte με πρόσημο

Αναφορά

long int *

O

Πίνακας

Αναφορά

Μεταβιβάζονται τρία ορίσματα:
unsigned short int *
unsigned short int *
double [ ]

P

Δομή δεδομένων Microsoft Excel OPER

Αναφορά

OPER *

R

Δομή δεδομένων Microsoft Excel XLOPER

Αναφορά

XLOPER *

Αρχή της σελίδας

Παρατηρήσεις

  • Οι δηλώσεις της γλώσσας C βασίζονται στην υπόθεση ότι το πρόγραμμα μεταγλώττισης χρησιμοποιεί 8 byte σε δεδομένα double, 2 byte σε δεδομένα short integer και 4 byte σε δεδομένα long integer.

  • Στο περιβάλλον προγραμματισμού των Microsoft Windows, όλοι οι δείκτες είναι δείκτες far. Για παράδειγμα, πρέπει να δηλώσετε τον κωδικό τύπου δεδομένων D ως unsigned char far * στα Microsoft Windows.

  • Όλες οι συναρτήσεις στις DLL και οι πόροι κώδικα καλούνται με τη σύμβαση κλήσης της Pascal. Τα περισσότερα προγράμματα μεταγλώττισης C επιτρέπουν τη χρήση της σύμβασης κλήσης Pascal, με την προσθήκη της λέξης-κλειδιού Pascal στη δήλωση της συνάρτησης, όπως φαίνεται στο ακόλουθο παράδειγμα: pascal void main (rows,columns,a)

  • Εάν μια συνάρτηση χρησιμοποιεί έναν τύπο δεδομένων μεταβίβασης ως αναφορά για την επιστρεφόμενη τιμή, τότε μπορείτε να μεταβιβάσετε έναν μηδενικό δείκτη ως επιστρεφόμενη τιμή. Το Microsoft Excel θα ερμηνεύσει το μηδενικό δείκτη ως τιμή σφάλματος #ΑΡΙΘ! .

Αρχή της σελίδας

Πρόσθετες πληροφορίες για τους τύπους δεδομένων

Η ενότητα αυτή περιέχει λεπτομερείς πληροφορίες σχετικά με τους τύπους δεδομένων F, G, K, O, P και R και άλλες πληροφορίες σχετικά με το όρισμα κείμενο_τύπου.

Τύποι δεδομένων F και G

Με τους τύπους δεδομένων F και G, μια συνάρτηση μπορεί να τροποποιήσει το buffer συμβολοσειράς που εκχωρείται από το Microsoft Excel. Εάν ο κωδικός τύπου της επιστρεφόμενης τιμής είναι F ή G, τότε το Microsoft Excel παραβλέπει την επιστρεφόμενη τιμή της συνάρτησης. Αντίθετα, το Microsoft Excel αναζητά στη λίστα των ορισμάτων της συνάρτησης τον πρώτο αντίστοιχο τύπο δεδομένων (F ή G) και έπειτα λαμβάνει ως τιμή επιστροφής το τρέχον περιεχόμενο του buffer συμβολοσειράς που έχει εκχωρηθεί για το όρισμα αυτό. Το Microsoft Excel εκχωρεί 256 byte για το όρισμα, έτσι η συνάρτηση μπορεί να επιστρέφει μεγαλύτερη συμβολοσειρά από αυτήν που δέχτηκε.

Αρχή της σελίδας

Τύπος δεδομένων K

Ο τύπος δεδομένων K χρησιμοποιεί ένα δείκτη προς μια δομή FP μεταβλητού μεγέθους. Πρέπει να καθορίσετε τη δομή αυτή στη βιβλιοθήκη DLL ή στον πόρο κώδικα ως εξής:

typedef struct _FP
{
unsigned short int rows;
unsigned short int columns;
double array[1]; /* Actually, array[rows][columns] */
} FP;

Η δήλωση double array[1] εκχωρεί χώρο αποθήκευσης για πίνακα ενός μόνο στοιχείου. Ο αριθμός των στοιχείων στον πραγματικό πίνακα ισούται με τον αριθμό γραμμών rows επί τον αριθμό στηλών columns.

Αρχή της σελίδας

Τύπος δεδομένων O

Ο τύπος δεδομένων O μπορεί να χρησιμοποιηθεί μόνο ως όρισμα και όχι ως επιστρεφόμενη τιμή. Μεταβιβάζει τρία στοιχεία: ένα δείκτη προς τον αριθμό των γραμμών ενός πίνακα, ένα δείκτη προς τον αριθμό των στηλών ενός πίνακα και ένα δείκτη προς ένα δισδιάστατο πίνακα αριθμών κινητής υποδιαστολής.

Αντί να επιστρέψει μια τιμή, μια συνάρτηση μπορεί να τροποποιήσει έναν πίνακα που μεταβιβάζεται από τον τύπο δεδομένων O. Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε την τιμή ">O" στο όρισμα κείμενο_τύπου. Για περισσότερες πληροφορίες, ανατρέξτε στην παρακάτω ενότητα "Επιτόπια τροποποίηση — Δήλωση συναρτήσεων ως Void".

Ο τύπος δεδομένων O δημιουργήθηκε για απευθείας συμβατότητα με τις βιβλιοθήκες DLL της Fortran, που μεταβιβάζουν ορίσματα με αναφορά.

Αρχή της σελίδας

Τύπος δεδομένων Ρ

Ο τύπος δεδομένων P είναι ένας δείκτης για μια δομή δεδομένων OPER. Η δομή OPER περιέχει 8 byte δεδομένων, που ακολουθούνται από ένα αναγνωριστικό των 2 byte που καθορίζει τον τύπο δεδομένων. Με τον τύπο δεδομένων P, μια συνάρτηση DLL ή ένας πόρος κώδικα μπορεί να δεχθεί και να επιστρέψει οποιονδήποτε τύπο δεδομένων στο Microsoft Excel.

Η δομή δεδομένων OPER καθορίζεται ως εξής:

typedef struct _oper

{
union
{
double num;
unsigned char *str;
unsigned short int bool;
unsigned short int err;
struct
{
struct _oper *lparray;
unsigned short int rows;
unsigned short int columns;
} array;
} val;
unsigned short int type;
} OPER;

Το πεδίο type περιέχει μία από αυτές τις τιμές.

Τύπος

Περιγραφή

Πεδίο Val προς χρήση

1

Αριθμός

num

2

Συμβολοσειρά (το πρώτο byte περιέχει το μήκος της συμβολοσειράς)

str

4

Δυαδική τιμή (λογική τιμή)

bool

16

Σφάλμα: οι τιμές σφάλματος είναι:

0#ΚΕΝΟ!

7#ΔΙΑΙΡ./0!

15#ΤΙΜΗ!

23#ΑΝΑΦ!

29#ΟΝΟΜΑ?

36#ΑΡΙΘ!

42#Δ/Υ

err

64

Πίνακας

array

128

Όρισμα που παραλείπεται

256

Κενό κελί

Οι δύο τελευταίες τιμές μπορούν να χρησιμοποιηθούν μόνο ως ορίσματα και όχι ως επιστρεφόμενες τιμές. Η τιμή ορίσματος που έχει παραλειφθεί (128) μεταβιβάζεται όταν η καλούσα συνάρτηση παραλείπει κάποιο όρισμα. Η τιμή κενού κελιού (256) μεταβιβάζεται όταν η καλούσα συνάρτηση μεταβιβάζει μια αναφορά σε κενό κελί.

Αρχή της σελίδας

Τύπος δεδομένων R — Κλήση συναρτήσεων του Microsoft Excel από DLL

Ο τύπος δεδομένων R είναι ένας δείκτης για μια δομή XLOPER, η οποία είναι μια εμπλουτισμένη έκδοση της δομής OPER. Στην έκδοση 4.0 και σε νεότερες εκδόσεις του Microsoft Excel, μπορείτε να χρησιμοποιήσετε τον τύπο δεδομένων R, για να συντάξετε DLL και πόρους κώδικα που καλούν συναρτήσεις του Microsoft Excel. Με τη δομή XLOPER, μια συνάρτηση DLL, εκτός από τη μεταβίβαση δεδομένων, μπορεί να μεταβιβάσει αναφορές σε φύλλα εργασίας και να υλοποιήσει έλεγχο ροής. Η πλήρης περιγραφή του τύπου δεδομένων R και του ΑΡΙ (application programming interface) του Microsoft Excel είναι εκτός του πεδίου ενδιαφέροντος αυτού του θέματος. Το βιβλίο Microsoft Office XP Developer's Guide περιέχει λεπτομερείς πληροφορίες σχετικά με τον τύπο δεδομένων R, το Microsoft Excel API και πολλά άλλα τεχνικά θέματα του Microsoft Excel.

Αρχή της σελίδας

Δυναμικές συναρτήσεις και επανάληψη υπολογισμού

Το Microsoft Excel υπολογίζει συνήθως μια συνάρτηση DLL (ή πόρο κώδικα) μόνο όταν καταχωρείται σε κάποιο κελί, όταν κάποια από τις προηγούμενες συναρτήσεις αλλάξει ή όταν το κελί υπολογίζεται κατά την εκτέλεση μιας μακροεντολής. Σε ένα φύλλο εργασίας, μπορείτε να ορίσετε ως δυναμική μια συνάρτηση DLL ή έναν πόρο κώδικα, πράγμα το οποίο σημαίνει ότι επανυπολογίζεται κάθε φορά που επαναλαμβάνεται ο υπολογισμός του φύλλου εργασίας. Για να γίνει μια συνάρτηση δυναμική, προσθέστε ένα θαυμαστικό (!) ως τελευταίο χαρακτήρα στο όρισμα κείμενο_τύπου.

Για παράδειγμα, στο Microsoft Excel για Windows, ο παρακάτω τύπος φύλλου εργασίας επανυπολογίζεται κάθε φορά που επαναλαμβάνεται ο υπολογισμός του φύλλου εργασίας:

CALL("Kernel32","GetTickCount","J!")

Αρχή της σελίδας

Επιτόπια τροποποίηση — Δήλωση συναρτήσεων ως Void

Μπορείτε να χρησιμοποιήσετε στο όρισμα κείμενο_τύπου έναν μονοψήφιο αριθμό n για τον κώδικα τύπου επιστρεφόμενων δεδομένων, όπου n είναι ένας αριθμός από το 1 μέχρι το 9. Με αυτόν τον τρόπο, το Microsoft Excel τροποποιεί τη μεταβλητή στη θέση που υποδεικνύεται από το νιοστό (n) όρισμα στο κείμενο_τύπου, αντί να επιστρέψει μια τιμή. Η μέθοδος αυτή λέγεται επιτόπια τροποποίηση. Το νιοστό (n) όρισμα πρέπει να είναι ένας τύπος μεταβίβασης με αναφορά (C, D, E, F, G, K, L, M, N, O, P ή R). Επίσης, η συνάρτηση DLL ή ο πόρος κώδικα πρέπει να δηλωθούν με τη λέξη-κλειδί void στη γλώσσα C (ή τη λέξη-κλειδί procedure στη γλώσσα Pascal).

Για παράδειγμα, μια συνάρτηση DLL που δέχεται ως ορίσματα μια συμβολοσειρά που τελειώνει σε χαρακτήρα null και δύο δείκτες προς ακέραιους αριθμούς μπορεί να τροποποιήσει τη συμβολοσειρά επιτόπου. Χρησιμοποιήστε στο όρισμα κείμενο_τύπου την τιμή "1FMM" και δηλώστε τη συνάρτηση ως void.

Οι εκδόσεις πριν από το Microsoft Excel 4.0 χρησιμοποιούσαν το χαρακτήρα > για την επιτόπου τροποποίηση του πρώτου ορίσματος. Δεν υπήρχε τρόπος για την τροποποίηση άλλου ορίσματος, εκτός του πρώτου. Ο χαρακτήρας > χαρακτήρας είναι ισοδύναμος με n = 1 για την για το Microsoft Excel έκδοση 4.0 και νεότερη έκδοση.

Αρχή της σελίδας

Αναπτύξτε τις δεξιότητές σας
Εξερευνήστε το περιεχόμενο της εκπαίδευσης
Αποκτήστε πρώτοι τις νέες δυνατότητες
Γίνετε μέλος του Office Insider

Σας βοήθησαν αυτές οι πληροφορίες;

Σας ευχαριστούμε για τα σχόλιά σας!

Σας ευχαριστούμε για τα σχόλιά σας! Φαίνεται ότι μπορεί να είναι χρήσιμο να συνδεθείτε με έναν από τους συνεργάτες υποστήριξης του Office.

×