Korištenje funkcija CALL i REGISTER

Primjenjuje se na
Excel za Microsoft 365 Excel za Microsoft 365 za Mac Excel 2024 Excel 2024 za Mac Excel 2021 Excel 2021 za Mac Excel 2019 Excel 2016 Excel za iPad Excel za iPhone Excel za tablete s Androidom Excel za Android telefone

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.

Vrh stranice

Vrste podataka

U funkcijama CALL,REGISTER i REGISTER.ID argument type_text određuje vrstu podatka vraćene vrijednosti i vrste podataka svih argumenata DLL funkcije ili resursa koda. Prvi znak type_text određuje vrstu podatka vraćene vrijednosti. Ostali znakovi upućuju na vrste podataka svih argumenata. Npr. DLL funkcija koja vraća broj s pomičnim zarezom te uzima cijeli broj i broj s pomičnim zarezom kao argumente zahtijeva "BIB" za argument type_text.

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čka
(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čka
(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 *

Vrh stranice

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 vraćenu vrijednost koristi vrstu podatka koja se prosljeđuje referencom (pass-by-reference), kao vraćenu vrijednost možete proslijediti nul-pokazivač. Microsoft Excel će nulti pokazivač protumačiti kao #NUM! vrijednost nenumeričke prirode, PHI vraća vrijednost pogreške #VALUE!.

Vrh stranice

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.

Vrh stranice

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.

Vrh stranice

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, kao argument type_text možete koristiti ">O". 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.

Vrh stranice

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.

Vrh stranice

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.

Vrh stranice

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!")

Vrh stranice

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 > taj znak za promjenu prvog argumenta na mjestu; nije bilo načina za promjenu bilo kojeg drugog argumenta osim prvog. Znak > je ekvivalentan n = 1 u programu Microsoft Excel verzija 4.0 ili novija.

Vrh stranice