Važno: Oprez Neispravno uređivanje registratora može ozbiljno oštetiti operativni sistem i u tom slučaju morate da ga ponovo instalirate. Microsoft ne garantuje da je moguće rešiti probleme nastale usled neispravnog uređivanja registratora. Pre uređivanja registratora napravite rezervnu kopiju svih vrednih podataka. Najnovije informacije o korišćenju i zaštiti registratora računara potražite u pomoći za Microsoft Windows.
Ovaj članak opisuje sintaksu formule i upotrebu funkcija CALL, REGISTER i REGISTER.ID u programu Microsoft Excel.
Napomena: Funkcije CALL i REGISTER nisu dostupne u programu Excel za veb.
U ovom članku
Opis
Sledi opis tipova podataka argumenta i vrednosti koje daju funkcije CALL, REGISTER i REGISTER.ID. Argumenti i dobijene vrednosti, razlikuju se u zavisnosti od operativnog okruženja, a ove razlike su navedene u tabeli tipova podataka.
Tipovi podataka
U funkcijama CALL, REGISTER i REGISTER.ID argument type_text precizira tip podataka dobijene vrednosti ili tipove podataka svih argumenata za DLL funkcije ili programski resurs. Prvi znak argumenta type_text precizira tip podataka vrednosti koja se dobija. Preostali znakovi pokazuju tipove svih argumenata. Na primer, DLL funkcija koja daje broj sa pokretnim zarezom i prihvata argumente tipa ceo broj i broj sa pokretnim zarezom, zahtevala bi oznaku „BIB“ za argument type_text.
Tabela koja sledi, sadrži potpunu listu kodova za tipove podataka koje Microsoft Excel prepoznaje, opis svakog tipa podataka, opis načina na koji se prosleđuje argument ili dobijena vrednost, kao i deklaraciju tipa podataka uobičajenu za programski jezik C.
Kôd |
Opis |
Prenos |
Deklaracija u jeziku C |
A |
Logička vrednost (FALSE = 0, TRUE = 1) |
po vrednosti |
short int |
B |
8-bajtni IEEE broj sa pokretnim zarezom |
po vrednosti (Windows)po referenci (Macintosh) |
double (Windows)double * (Macintosh) |
C |
Niska koja se završava nulom (maksimalna dužina niske = 255) |
po referenci |
char * |
D |
Po bajtu izračunata niska (prvi bajt sadrži dužinu niske, maksimalna dužina niske = 255 znakova) |
po referenci |
Unsigned char * |
E |
8-bajtni IEEE broj sa pokretnim zarezom |
po referenci |
double * |
F |
Niska koja se završava nulom (maksimalna dužina niske = 255 znakova) |
po referenci (prilagođen adresi) |
char * |
G |
Po bajtu izračunata niska (prvi bajt sadrži dužinu niske, maksimalna dužina niske = 255 znakova) |
po referenci (prilagođen adresi) |
unsigned char * |
H |
Neoznačen 2-bajtni ceo broj |
po vrednosti |
unsigned short int |
I |
Označen 2-bajtni ceo broj |
po vrednosti |
short int |
J |
Označen 4-bajtni ceo broj |
po vrednosti |
long int |
K |
Niz |
po referenci |
FP * |
L |
Logička vrednost (FALSE = 0, TRUE = 1) |
po referenci |
short int * |
M |
Označen 2-bajtni ceo broj |
po referenci |
short int * |
N |
Označen 4-bajtni ceo broj |
po referenci |
long int * |
O |
Niz |
po referenci |
Prosleđuju se tri argumenta: unsigned short int * unsigned short int * double [ ] |
P |
Struktura podataka OPER programa Microsoft Excel |
po referenci |
OPER * |
R |
Struktura podataka XLOPER programa Microsoft Excel |
po referenci |
XLOPER * |
Primedbe
-
Deklaracije programskog jezika C zasnivaju se na pretpostavci da je za vaš prevodilac podrazumevana dužina realnih brojeva dvostruke preciznosti 8 bajtova, celih brojeva 2 bajta, a velikih celih brojeva 4 bajta.
-
U okruženju za programiranje operativnog sistema Microsoft Windows svi pokazivači su dalekosežni. Na primer, u operativnom sistemu Microsoft Windows morate da deklarišete kôd tipa podataka, koji je u tabeli u redu D, kao unsigned char far *.
-
Sve funkcije u DLL-ovima i programskim resursima pozivaju se po konvenciji pozivanja programskog jezika Pascal. Većina prevodilaca za programski jezik C dozvoljava korišćenje konvencije pozivanja programskog jezika Pascal tako što dodaje ključne reči tog jezika u deklaraciju funkcije, kao što je prikazano u sledećem primeru: pascal void main (rows,columns,a)
-
Ako funkcija za povratnu vrednost koristi tip podataka "prolaz po referencu", možete da dodate pokazivač bez vrednosti kao povratnu vrednost. Microsoft Excel će protumačiti pokazivač bez vrednosti kao #NUM! ako su argumenti datuma niske koje se ne mogu raščlaniti na važeće datume.
Dodatne informacije o tipovima podataka
Ovaj odeljak sadrži detaljne informacije o tipovima podataka F, G, K, O, P i R, kao i druge informacije o argumentu type_text.
Tipovi podataka F i G
Sa tipovima podataka F i G funkcija može da izmeni međumemoriju koju je dodelio Microsoft Excel. Ako je kôd vrednosti koja se dobija F ili G, Microsoft Excel zanemaruje vrednost koju funkcija daje. Umesto toga, Microsoft Excel traži prvi odgovarajući tip podataka (F ili G) na listi argumenata funkcije, a zatim uzima trenutni sadržaj dodeljene međumemorije za vrednost koju će dati. Microsoft Excel dodeljuje 256 bajtova za argument, tako da funkcija može dati dužu nisku od one koju je primila.
Tip podataka K
Tip podataka K koristi pokazivač na strukturu promenljive veličine sa pokretnim zarezom (FP). Morate da definišete ovu strukturu u DLL-u ili programskom resursu, kao što sledi:
typedef struct _FP
{ unsigned short int rows; unsigned short int columns; double array[1]; /* Actually, array[rows][columns] */ } FP;
Deklaracija double array[1] dodeljuje memoriju samo jednočlanom nizu. Broj elemenata stvarnog niza jednak je broju redova pomnoženom sa brojem kolona.
Tip podataka O
Tip podataka O može da se koristi samo kao argument funkcije, a ne kao vrednost koja se dobija. Prosleđuje tri stavke: pokazivač na broj redova u nizu, pokazivač na broj kolona u nizu i pokazivač na dvodimenzionalni niz brojeva sa pokretnim zarezom.
Umesto da vrati vrednost, funkcija može da izmeni niz koji je dao tip podataka "O". Da biste to uradili, možete da koristite ">O" kao type_text argument. Više informacija potražite u odeljku "Izmena na licu mesta – funkcije deklarisane kao nevažeće" u nastavku.
Tip podataka O je kreiran tako da je direktno kompatibilan sa DLL-ovima programskog jezika Fortran, koji prenose argumente po referenci.
Tip podataka P
Tip podataka P je pokazivač na strukturu OPER. Struktura OPER sadrži 8 bajtova podataka, koje sledi 2-bajtni identifikator koji određuje tip podataka. Funkcija iz DLL-a ili programskog resursa može sa podatkom tipa P da uzme i da bilo koji tip podataka programa Microsoft Excel.
Struktura OPER se definiše na sledeći način:
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;
Polje „Tip“ sadrži jednu od ovih vrednosti.
Tip |
Opis |
Dozvoljen tip polja |
1 |
Numerički |
num |
2 |
Niska (prvi bajt sadrži dužinu niske) |
str |
4 |
Bulov (logički) |
bool |
16 |
Greška: greške su: 0#NULL! 7#DIV/0! 15#Value! 23#REF! 29#NAME? 36#NUM! 42#N/A |
err |
64 |
Niz |
array |
128 |
Argument koji nedostaje |
|
256 |
Prazna ćelija |
Poslednje dve vrednosti mogu da se koriste samo kao argumenti funkcije. Vrednost argumenta koji nedostaje (128) prosleđuje se kada se pri pozivu funkcije izostavi argument. Vrednost prazne ćelije (256) prosleđuje se kada se pri pozivu funkcije zada referenca na praznu ćeliju.
Tip podataka R – poziv funkcija programa Microsoft Excel iz DLL-ova
Tip podataka R je pokazivač na strukturu XLOPER, koja je veća verzija strukture OPER. U programu Microsoft Excel, verzija 4.0 ili kasnija, možete da koristite tip podataka R da biste pisali DLL-ove ili programske resurse koji pozivaju funkcije ovog programa. Uz pomoć strukture XLOPER funkcije DLL-a mogu da prosleđuju reference na listove i da primene dodatnu kontrolu toka pri prosleđivanju podataka. Potpun opis tipa podataka R i programskog interfejsa za aplikacije (API) programa Microsoft Excel je preobiman za ovu temu. Vodič za razvojne timove programu Microsoft Office XP sadrži detaljne informacije o tipu podataka R, API-ju programa Microsoft Excel i mnogim drugim tehničkim stranama programa Microsoft Excel.
Nepostojane funkcije i ponovno računanje
Microsoft Excel obično izračunava vrednost funkcije iz DLL-a (ili programskog resursa) samo onda kada je ona uneta u ćeliju, kada se izmeni sadržaj neke od prethodnih ćelija ili kada makro izračunava vrednost u ćeliji. U radnom listu možete da napravite nepostojanu funkciju iz DLL-a ili nepostojan programski resurs, što znači da će se ove vrednosti izračunavati svaki put kada se ponovno izračunava radni list. Dodajte znak uzvika (!) kao poslednji znak u argumentu type_text da biste funkciju učinili nepostojanom.
Na primer, u programu Microsoft Excel for Windows formula sledećeg radnog lista se izračunava svaki put kada se izračunava radni list:
CALL("Kernel32","GetTickCount","J!")
Izmene na nekom mestu – funkcije deklarisane kao „void“
Možete upotrebiti jednu cifru n, to jest broj od 1 do 9, u argumentu type_argument, koja se odnosi na kôd tipa dobijene vrednosti. Ovim se saopštava programu Microsoft Excel da izmeni promenljivu na n-tom mestu, umesto da vrati vrednost. Postupak je poznat pod nazivom „Izmene na nekom mestu“. N-ti argument mora da bude onog tipa podataka koji može da se prosleđuje po referenci (C, D, E, F, G, K, L, M, N, O, P ili R). DLL funkcija ili programski resurs takođe moraju da budu deklarisani pomoću ključne reči „void“ u jeziku C (ili ključne reči „procedure“ u jeziku Pascal).
Na primer, funkcija iz DLL-a koja za argumente prihvata nisku koja se završava nulom i dva pokazivača na celobrojne vrednosti, može da izmeni nisku na nekom mestu. Upotrebite „1FMM“ kao argument type_text, a zatim deklarišite funkciju kao „void“.
Prethodna verzija programa Microsoft Excel 4.0 je koristila oznaku > za izmene prvog argumenta na nekom mestu; nema načina da se izmeni bilo koji drugi argument osim prvog. Oznaka > je ekvivalentna zapisu n = 1 u programu Microsoft Excel, verzija 4.0 ili kasnije.