Important: Atenție Editarea incorectă a registry poate deteriora grav sistemul de operare, impunând reinstalarea acestuia. Microsoft nu poate garanta că problemele rezultate din editarea incorectă a registry se pot rezolva. Înainte să editați în registry, faceți backup tuturor datelor importante. Pentru cele mai recente informații privind utilizarea și protejarea registry-ului computerului, consultați Ajutorul Microsoft Windows.
Acest articol descrie sintaxa formulei și modul de utilizare a funcțiilor CALL, REGISTER și REGISTER.ID în Microsoft Excel.
Notă: Funcțiile CALL și REGISTER nu sunt disponibile în Excel pentru web.
În acest articol
Descriere
În cele ce urmează sunt descrise tipurile de date ale argumentelor și valorilor returnate de funcțiile CALL, REGISTER și REGISTER.ID. Argumentele și valorile returnate diferă net în funcție de mediul de operare și aceste diferențe sunt notate în tabelul de tipuri de date.
Tipuri de date
În funcțiile CALL, REGISTER și REGISTER.ID, argumentul type_text specifică tipul de dată al valorii returnate și tipurile de date pentru toate argumentele funcției DLL sau resursei de cod. Primul caracter din type_text indică tipul de dată al valorii returnate. Restul caracterelor indică tipurile de date ale tuturor argumentelor. De exemplu, o funcție DLL care returnează un număr cu format în virgulă flotantă și primește drept argumente un întreg și un număr în virgulă flotantă, va necesita expresia "BIB" pentru argumentul type_text.
Tabelul următor conține o listă completă a codurilor tipurilor de date recunoscute de Microsoft Excel, o descriere a fiecărui tip de dată, modul cum sunt transferate argumentul și valoarea returnată și o declarare tipică pentru tipul de dată în limbajul de programare C.
Cod |
Descriere |
Mod de transfer |
Declarare în C |
A |
Logic (FALSE = 0), TRUE = 1) |
Valoare |
short int |
B |
Număr în virgulă flotantă IEEE 8-byte |
Valoare (Windows)Referință (Macintosh) |
double (Windows)double * (Macintosh) |
C |
Șir null-terminated (lungime maximă șir = 255) |
Referință |
char * |
D |
Șir byte-counted (primul byte conține lungimea șirului, lungime maximă șir = 255 caractere) |
Referință |
Unsigned char * |
E |
Număr în virgulă flotantă IEEE 8-byte |
Referință |
double * |
F |
Șir null-terminated (lungime maximă șir = 255 caractere) |
Referință (modifică pe loc) |
char * |
G |
Șir byte-counted (primul byte conține lungimea șirului, lungime maximă șir = 255 caractere) |
Referință (modifică pe loc) |
unsigned char * |
H |
Întreg 2-byte fără semn |
Valoare |
unsigned short int |
I |
Întreg 2-byte cu semn |
Valoare |
short int |
J |
Întreg 4-byte cu semn |
Valoare |
long int |
K |
Matrice |
Referință |
FP * |
L |
Logic (FALSE = 0, TRUE = 1) |
Referință |
short int * |
M |
Întreg 2-byte cu semn |
Referință |
short int * |
N |
Întreg 4-byte cu semn |
Referință |
long int * |
O |
Matrice |
Referință |
Trei argumente sunt transferate: unsigned short int * unsigned short int * double [ ] |
P |
Structură de date Microsoft Excel OPER |
Referință |
OPER * |
R |
Structură de date Microsoft Excel XLOPER |
Referință |
XLOPER * |
Observații
-
Declarațiile din limbajul C se bazează pe prezumția că compilatorul dvs. implică formatele de întreg dublu 8-byte, întreg scurt 2-byte și întreg lung 4-byte.
-
În mediul de programare Microsoft Windows, toate indicatoarele sunt pointeri far. De exemplu, codul tipului de dată D va trebui declarat ca unsigned char far * în Microsoft Windows.
-
Toate funcțiile din bibliotecile DLL și din resursele de cod sunt apelate utilizându-se convenția de apelare Pascal. Majoritatea compilatoarelor C vă permit să utilizați convenția de apelare Pascal prin adăugarea la declarația funcției a cuvântului cheie Pascal, ca în exemplul următor: pascal void main (rows,columns,a)
-
Dacă o funcție utilizează un tip de date pass-by-reference pentru valoarea returnată, puteți transmite un indicator nul ca valoare returnată. Microsoft Excel va interpreta indicatorul nul ca fiind #NUM! .
Informații despre tipuri de date suplimentare
Această secțiune conține informații detaliate despre tipurile de date F, G, K, O, P și R și alte informații despre argumentul type_text.
Tipuri de date F și G
Cu tipurile de date F și G, o funcție poate modifica buffer-ul alocat de Microsoft Excel unui șir. Dacă codul tipului de dată al valorii returnate este F sau G, atunci Microsoft Excel ignoră valoarea returnată de către funcție. Ca urmare, Microsoft Excel caută în lista argumentelor funcției până la primul tip de dată corespunzător (F sau G), apoi preia drept valoare returnată conținutul buffer-ului alocat pentru șir. Microsoft Excel alocă 256 byți pentru argument, astfel încât funcția poate returna un șir mai lung decât cel primit.
Tipul de dată K
Tipul de dată K utilizează un indicator spre o structură de mărime variabilă FP. Trebuie să definiți această structură în biblioteca DLL sau în resursa de cod, după cum urmează:
typedef struct _FP
{ unsigned short int rows; unsigned short int columns; double array[1]; /* Actually, array[rows][columns] */ } FP;
Declarația double array[1] alocă memorie numai pentru o matrice cu un singur element. Numărul de elemente din matricea actuală este egal cu numărul de linii înmulțit cu numărul de coloane.
Tip de dată O
Tipul de dată O poate fi utilizat numai ca un argument, nu și ca valoare returnată. El transferă trei elemente: un indicator spre numărul de linii dintr-o matrice, un indicator spre numărul de coloane din matrice și un indicator spre o matrice bi-dimensională sau spre numere în virgulă flotantă.
În loc să returneze o valoare, o funcție poate modifica o matrice transmisă de tipul de date O. Pentru a face acest lucru, puteți utiliza ">O" ca argument type_text. Pentru mai multe informații, consultați "Modificarea pe loc - Funcții declarate ca Void" de mai jos.
Tipul de dată O a fost creat pentru compatibilitate expresă cu bibliotecile DLL Fortran, care transferă argumente prin referințe.
Tip de dată P
Tipul de dată P este un indicator spre o structură OPER. Structura OPER conține 8 byți de date, urmați de un identificator de 2 byți care specifică tipul de dată. Cu un tip de dată P, o funcție DLL sau o resursă de cod poate prelua și întoarce orice tip de dată Microsoft Excel.
Structura de date OPER este definită după cum urmează:
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;
Câmpul type conține una dintre aceste valori.
Tip |
Descriere |
Câmpul Val utilizat |
1 |
Numeric |
num |
2 |
String (primul octet conține lungimea șirului) |
str |
4 |
Boolean (logic) |
bool |
16 |
Eroare: valorile de eroare sunt: 0#NULL! 7#DIV/0! 15#Value! 23#REF! 29#NAME? 36#NUM! 42#N/A |
err |
64 |
Matrice |
array |
128 |
Argument lipsă |
|
256 |
Celulă goală |
Ultimele două valori pot fi utilizate numai ca argumente, nu și ca valori returnate. Valoarea pentru argument lipsă (128) este transferată atunci când apelantul omite un argument. Valoarea de celulă goală (256) este transferată atunci când apelantul transferă o referință pentru o celulă goală.
Tip de dată R — Apelarea funcțiilor Microsoft Excel din bibliotecile DLL
Tipul de dată R este un indicator spre o structură XLOPER, care este o versiune îmbunătățită a structurii OPER. În Microsoft Excel versiunile 4.0 și mai recente, puteți utiliza tipuri de date R pentru a scrie biblioteci DLL și resurse de cod care apelează funcții Microsoft Excel. Cu structura XLOPER, o funcție DLL poate transfera referințe de foaie și implementa control flux pe lângă transferul de date. O descriere completă a tipului de dată R și a interfeței programelor de aplicație Microsoft Excel (application programming interface -API) este mai presus de scopul acestui subiect. Microsoft Office XP Developer's Guide conține informații detaliate despre tipul de dată R, Microsoft Excel API și multe alte aspecte tehnice ale Microsoft Excel.
Funcții volatile și recalculări
Microsoft Excel calculează de obicei o funcție DLL (sau o resursă de cod) numai atunci când este introdusă într-o celulă, când una dintre precedentele sale se modifică sau când celula este calculată în timpul unei macrocomenzi. Într-o foaie de calcul, puteți face o funcție DLL sau o resursă de cod volatile, adică să recalculeze de fiecare dată când foaia de calcul este recalculată. Pentru a face o funcție volatilă, adăugați un semn de exclamație (!) ca ultim caracter în argumentul type_text.
De exemplu, în Microsoft Excel pentru Windows, următoarea formulă din foaia de calcul se recalculează de fiecare dată când foaia de calcul este recalculată:
CALL("Kernel32","GetTickCount","J!")
Modificare pe loc — Funcții declarate ca Void
Puteți utiliza o singură cifră n pentru codul tipului de returnare din type_text, unde n este un număr între 1 și 9. Acest lucru spune Microsoft Excel să modifice variabila în locația indicată de al n-lea argument din type_text, în loc să returneze o valoare. Acest lucru se mai numește și modificare în locație. Argumentul n trebuie să fie un tip de date pass-by-reference (C, D, E, F, G, K, L, M, N, O, P sau R). Funcția DLL sau resursa de cod trebuie, de asemenea, declarată cu cuvântul cheie nul în limba C (sau cu cuvântul cheie procedură în limba Pascal).
De exemplu, o funcție DLL care primește drept argumente un șir null-terminated și doi indicatori spre întregi, poate modifica șirul în loc. Utilizați "1FMM" ca argument type_text și declarați funcția ca void.
Versiunile anterioare lui Microsoft Excel 4.0 foloseau caracterul > pentru modificarea primului argument în loc; nu exista nicio posibilitate de a modifica un alt argument în afară de primul. Caracterul > este echivalent cu n = 1 din Microsoft Excel versiunile 4.0 și ulterioare.