Važno: Oprez Uređivanjem registra na neodgovarajući način možete ozbiljno oštetiti operacijski sustav i možda ćete ga morati ponovno instalirati. Microsoft ne jamči rješavanje problema nastalih zbog uređivanja registra na neodgovarajući način. Prije uređivanja registra sigurnosno kopirajte važne podatke. Najažurnije informacije o korištenju i zaštiti registra računala potražite u pomoći za sustav Microsoft Windows.
U ovom su članku opisani sintaksa formule i način korištenja funkcija CALL, REGISTER i REGISTER.ID u programu Microsoft Excel.
Napomena: Funkcije CALL i REGISTER nisu dostupne u Excel za web.
Sadržaj članka
Opis
Sljedeći odlomci opisuju vrste podataka argumenata i vraćenih vrijednosti koje koriste funkcije CALL, REGISTER i REGISTER.ID. Argumenti i vraćene vrijednosti malo se razlikuju ovisno o radnom okruženju, a te su razlike zabilježene tablici vrste podataka CALL, REGISTER i REGISTER.ID.
Vrste podataka
U funkcijama CALL, REGISTERi REGISTER.ID argument type_text određuje vrstu podataka povratne vrijednosti i vrste podataka svih argumenata za dll funkciju ili resurs koda. Prvi znak type_text određuje vrstu podataka za povratnu vrijednost. Preostali znakovi označavaju vrste podataka svih argumenata. Dll funkcija koja, primjerice, vraća broj s pomičnim zarezom i uzima cijeli broj i broj s pomičnim zarezom kao argumente, za argument type_text vrijednosti.
Sljedeća tablica sadrži potpuni popis kôdova vrsta podataka koje Microsoft Excel prepoznaje, opis svih vrsta podataka, način na koji se prosljeđuje argument ili vraćena vrijednost i tipičnu deklaraciju vrste podatka u programskom jeziku C.
Kôd |
Opis |
Način prosljeđivanja |
C deklaracija |
A |
Logički (FALSE = 0), TRUE = 1) |
Vrijednost |
short int |
B |
IEEE 8-bajtni broj s pomičnom točkom |
vrijednost (Windows)referenca (Macintosh) |
double (Windows)double * (Macintosh) |
C |
Niz znakova zaključen nul-znakom (najveća duljina niza znakova = 255) |
referenca |
char * |
D |
Niz znakova definiran znakovima (prvi bajt sadrži duljinu niza znakova, najveća duljina niza = 255) |
referenca |
Unsigned char * |
E |
IEEE 8-bajtni broj s pomičnom točkom |
referenca |
double * |
F |
Niz znakova zaključen nul-znakom (najveća duljina niza znakova = 255) |
referenca (promjena na mjestu) |
char * |
G |
Niz znakova definiran znakovima (prvi bajt sadrži duljinu niza znakova, najveća duljina niza = 255) |
referenca (promjena na mjestu) |
unsigned char * |
H |
2-bajtni cijeli broj bez predznaka |
Vrijednost |
unsigned short int |
I |
2-bajtni cijeli broj s predznakom |
Vrijednost |
short int |
J |
4-bajtni cijeli broj s predznakom |
Vrijednost |
long int |
K |
Polje |
referenca |
FP * |
L |
Logički (FALSE = 0, TRUE = 1) |
referenca |
short int * |
M |
2-bajtni cijeli broj s predznakom |
referenca |
short int * |
N |
4-bajtni cijeli broj s predznakom |
referenca |
long int * |
O |
Polje |
referenca |
Prosljeđuju se tri argumenta: unsigned short int * unsigned short int * double [ ] |
P |
Microsoft Excel OPER struktura podataka |
referenca |
OPER * |
R |
Microsoft Excel XLOPER struktura podataka |
referenca |
XLOPER * |
Napomene
-
Deklaracije jezika C temeljene su na pretpostavci da vaš prevoditelj (compiler) zadano radi sa 8-bajtnim brojevima dvostruke preciznosti, 2-bajtnim kratkim cijelim brojevima (short integers) i 4- bajtnim dugim cijelim brojevima (long integers).
-
U programskom okruženju sustava Microsoft Windows svi su pokazivači daleki (far pointers). Na primjer, u sustavu Microsoft Windows morate deklarirati šifru vrste podatka D kao unsigned char far * .
-
Sve funkcije u DLL bibliotekama i resursima koda pozivaju se pomoću konvencije o načinu pozivanja u Pascalu (Pascal calling convention). Gotovo svi C kompilatori dopuštaju korištenje konvencije o načinu pozivanja u Pascalu dodavanjem ključne riječi Pascal u deklaraciju funkcije, kao što je prikazano u sljedećem primjeru pascal void main (rows,columns,a)
-
Ako funkcija za povratnu vrijednost koristi vrstu podataka pass-by-reference, kao povratnu vrijednost možete proslijediti pokazivač null. Microsoft Excel će protumačiti null pokazivač kao #NUM! vrijednost nenumeričke prirode, PHI vraća vrijednost pogreške #VALUE!.
Dodatne informacije o vrstama podataka
Ova sekcija sadrži detaljne informacije o F, G, K, O, P i R vrstama podataka i druge informacije o argumentu type_text.
Vrste podataka F i G
Pomoću F i G vrsta podataka funkcija može promijeniti međuspremnik niza (string buffer) kojeg je dodijelio Microsoft Excel. Ako je kôd vrste vraćene vrijednosti F ili G, tada Microsoft Excel zanemaruje vrijednost koju funkcija vraća. Umjesto toga, Microsoft Excel pretražuje popis argumenata funkcije i traži prvu odgovarajuću vrstu podatka (F ili G), a zatim uzima trenutni sadržaj dodijeljenog međuspremnika niza (allocated string buffer) kao vraćenu vrijednost. Microsoft Excel dodjeljuje 256 bajtova za argument, pa funkcija može vratiti niz koji je dulji od primljenog.
Vrsta podataka K
K vrsta podataka koristi pokazivač na FP strukturu promjenjive veličine. Morate definirati tu strukturu u DLL biblioteci ili u resursima kôda kao što slijedi:
typedef struct _FP
{ unsigned short int rows; unsigned short int columns; double array[1]; /* Actually, array[rows][columns] */ } FP;
Deklaracija double array[1] dodjeljuje mjesto za spremanje polja od jednog elementa. Broj elemenata u stvarnom polju jednak je broju redaka pomnoženom s brojem stupaca.
Vrsta podataka O
O vrsta podataka može se koristiti samo kao argument, ne kao vraćena vrijednost. Ona prosljeđuje tri stavke: pokazivač na broj redaka u polju, pokazivač na broj stupaca u polju i pokazivač na dvodimenzionalno polje brojeva s pomičnom točkom.
Umjesto vraćanja vrijednosti, funkcija može promijeniti polje proslijeđeno O vrstom podataka. Želite li to napraviti, možete koristiti ">O" kao argument tekst_vrste. Za više informacija pogledajte odlomak ispod: "Promjena na mjestu — funkcije deklarirane kao Void".
O vrsta podataka stvorena je zbog direktne kompatibilnosti s Fortran DLL bibliotekama, koje prosljeđuju argumente referencom.
Vrsta podataka P
P vrsta podataka je pokazivač na OPER strukturu. OPER struktura sadrži 8 bajtova podataka iza kojih slijedi 2-bajtni identifikator koji određuje vrstu podataka. Pomoću P vrste podataka, DLL funkcija ili resurs kôda mogu primiti i vratiti bilo koju vrstu podataka Microsoft Excela.
OPER struktura definirana je kao što slijedi:
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 vrsta sadrži jednu od ovih vrijednosti.
Vrsta |
Opis |
Val polje za korištenje |
1 |
Brojčani |
num |
2 |
Niz znakova (prvi bajt sadrži duljinu niza znakova) |
str |
4 |
Boole-ov (logički) |
bool |
16 |
Pogreška: vrijednosti pogreške su: 0#NULL! 7#DIV/0! 15#VALUE! 23#REF! 29#NAME? 36#NUM! 42#N/A |
err |
64 |
Polje |
polje |
128 |
Nedostajući argument |
|
256 |
Prazna ćelija |
Posljednje dvije vrijednosti mogu se koristiti samo kao argumenti, ne i kao prikazane vrijednosti. Nedostajuća vrijednost argumenta (128) prosljeđuje se kada pozivatelj ne navede argument. Vrijednost prazne ćelije (256) prosljeđuje se kada pozivatelj proslijedi referencu prema praznoj ćeliji.
Vrsta podataka R – pozivanje funkcija programa Microsoft Excel iz DLL biblioteka
R vrsta podataka ukazuje na strukturu XLOPER, što je unaprijeđena verzija strukture OPER. U Microsoft Excelu verzije 4.0 i starijim možete koristiti R vrstu podataka za pisanje DLLova i kodnih resursa koji pozivaju funkcije Microsoft Excela. Pomoću strukture XLOPER, funkcija DLL može proslijediti reference lista i implementirati kontrolu toka, pored prosljeđivanja podataka. Potpuni opis R vrste podataka i sučelja za programiranje aplikacija (API) Microsoft Excela preopširan je za ovu temu. Microsoft Office XP Developer's Guide sadrži detaljne informacije o R vrsti podataka, o Microsoft Excel API i mnogim drugim tehničkim aspektima Microsoft Excela.
Promjenjive funkcije i ponovni izračun
Microsoft Excel obično izračunava DLL funkciju (ili resurs kda) samo kad se oni unesu u ćeliju, kad se jedan od njihovih prethodnika promijeni ili kad se ćelija izračunava za vrijeme makronaredbe. Na radnom listu, možete proglasiti DLL funkciju ili resurs kôda promjenjivom (volatile), što znači da se ponovno izračunava svaki put kad se radni list ponovno izračunava. Ako želite da funkcija bude promjenjiva, dodajte uskličnik (!) kao zadnji znak argumenta type_text.
Na primjer, u programima Microsoft Excel za Windows, sljedeća formula radnog lista ponovno se izračunava svaki put kad se radni list ponovno izračunava:
CALL("Jezgra32","DohvatiBrojSignala","J!")
Izmjena na mjestu – funkcije deklarirane kao ništetne
Možete koristiti jednu znamenku n za kôd vrste vraćene vrijednosti u type_text, gdje je n broj od 1 do 9. Ovo govori Microsoft Excelu da promijeni varijablu na lokaciji na koju pokazuje n-ti argument u type_text, umjesto da vraća vrijednost. Ovaj postupak zove se promjena na mjestu. N-ti argument mora imati vrstu podatka koja se prosljeđuje referencom (C, D, E, F, G, K, L, M, N, O, P ili R). DLL funkcija ili resurs kda moraju također biti deklarirani uz korištenje ključne riječi void u programskom jeziku C (ili uz korištenje ključne riječi procedure u programskom jeziku Pascal).
Na primjer, DLL funkcija koja kao argumente uzima niz znakova zaključen nul-znakom i dva pokazivača na cijele brojeve, može na mjestu promijeniti niz znakova. Koristite "1FMM" kao argument type_text i deklarirajte funkciju kao void.
Verzije ranije od Microsoft Excel 4.0 koristile su znak > za promjenu prvog argumenta na mjestu; nije bilo načina za promjenu bilo kojeg drugog argumenta osim prvog. Znak > ekvivalentan je n = 1 u programu Microsoft Excel verzija 4.0 ili novija.