Použitie funkcií CALL a REGISTER

Dôležité : Upozornenie    Nesprávnou úpravou databázy Registry sa môže vážne poškodiť operačný systém a môže sa požadovať jeho opätovná inštalácia. Spoločnosť Microsoft nezaručuje, že sa problémy, ktoré vzniknú dôsledkom nesprávnej úpravy databázy Registry, dajú odstrániť. Pred vykonaním úprav databázy Registry si zálohujte všetky cenné údaje. Najnovšie informácie o používaní a ochrane databázy Registry počítača nájdete v Pomocníkovi systému Microsoft Windows.

V tomto článku sa popisuje syntax vzorca a používanie funkcií CALL, REGISTER a REGISTER.ID v Microsoft Exceli.

Poznámka : Funkcie CALL a REGISTER nie sú dostupné v aplikácii Excel Online.

Obsah tohto článku

Popis

Typy údajov

Poznámky

Ďalšie informácie o údajových typoch

Údajové typy F a G

Údajový typ K

Údajový typ O

Údajový typ P

Údajový typ R – volanie funkcií programu Microsoft Excel z knižníc DLL

Nestále funkcie a prepočítavanie

Zmena na mieste – funkcie deklarované s návratovým typom void

Popis

Nasledujúca časť popisuje údajové typy argumentov a návratových hodnôt používané funkciami CALL, REGISTER a REGISTER.ID. Argumenty a návratové hodnoty sa mierne líšia v závislosti od používaného prostredia a tieto rozdiely sú uvedené v tabuľke údajových typov.

Na začiatok stránky

Údajové typy

Vo funkciách CALL, REGISTER a REGISTER.ID argument type_text určuje údajové typy návratovej hodnoty a všetkých argumentov funkcie knižnice DLL alebo zdroja kódu. Prvý znak argumentu type_text určuje údajový typ návratovej hodnoty. Zvyšné znaky určujú údajové typy všetkých argumentov. Napríklad funkcia knižnice DLL vracajúca číslo s pohyblivou rádovou čiarkou a akceptujúca celé čísla a čísla s pohyblivou rádovou čiarkou ako argumenty by vyžadovala argument type_text v tvare „BIB“.

Nasledujúca tabuľka obsahuje úplný zoznam kódov údajových typov rozoznávaných programom Microsoft Excel, popis každého údajového typu, spôsob predania argumentu alebo návratovej hodnoty a obvyklý spôsob deklarácie údajového typu v programovacom jazyku C.

Kód

Popis

Predanie pomocou

Deklarácia v jazyku C

A

Logická hodnota
(FALSE = 0), TRUE = 1)

Hodnota

short int

B

8-bajtové číslo s pohyblivou rádovou čiarkou podľa normy IEEE

Hodnota
(Windows)

Referencia (Macintosh)

double
(Windows)

double * (Macintosh)

C

Reťazec ukončený nulovým znakom (maximálna dĺžka reťazca = 255)

Referencia

char *

D

Reťazec počítaný na bajty (prvý bajt obsahuje dĺžku reťazca, maximálna dĺžka reťazca = 255 znakov)

Referencia

Unsigned char *

E

8-bajtové číslo s pohyblivou rádovou čiarkou podľa normy IEEE

Referencia

double *

F

Reťazec ukončený nulovým znakom (maximálna dĺžka reťazca = 255)

Referencia (zmeniť na mieste)

char *

G

Reťazec počítaný na bajty (prvý bajt obsahuje dĺžku reťazca, maximálna dĺžka reťazca = 255 znakov)

Referencia (zmeniť na mieste)

unsigned char *

H

Celé dvojbajtové číslo bez znamienka

Hodnota

unsigned short int

I

Celé 2-bajtové číslo so znamienkom

Hodnota

short int

J

Celé 4-bajtové číslo so znamienkom

Hodnota

long int

K

Pole

Referencia

FP *

L

Logická hodnota
(FALSE = 0), TRUE = 1)

Referencia

short int *

M

Celé 2-bajtové číslo so znamienkom

Referencia

short int *

N

Celé 4-bajtové číslo so znamienkom

Referencia

long int *

O

Pole

Referencia

Predajú sa tri argumenty:
unsigned short int *
unsigned short int *
double [ ]

P

údajová štruktúra Microsoft Excel OPER

Referencia

OPER *

R

údajová štruktúra Microsoft Excel XLOPER

Referencia

XLOPER *

Na začiatok stránky

Poznámky

  • Deklarácie v jazyku C sú založené na predpoklade, že kompilátor používa 8 bajtov pre typ double, 2 bajty pre typ short integer a 4 bajty pre typ long integer.

  • V programovacom prostredí systému Microsoft Windows sú všetky smerníky vzdialenými smerníkmi. V systéme Microsoft Windows je napríklad nutné deklarovať údajový typ D ako unsigned char far *.

  • Všetky funkcie v knižniciach DLL a zdrojoch kódu sú volané pomocou volacej konvencie jazyka Pascal. Väčšina kompilátorov jazyka C umožňuje používať volaciu konvenciu jazyka Pascal pridaním kľúčového slova Pascal do deklarácie funkcie, ako je to uvedené v nasledujúcom príklade: pascal void main (rows,columns,a).

  • Ak funkcia používa pre návratovú hodnotu údajový typ predávaný referenciou, môže vrátiť nulový smerník. Program Microsoft Excel bude interpretovať nulový smerník ako chybovú hodnotu #ČÍSLO!

Na začiatok stránky

Ďalšie informácie o údajových typoch

Táto sekcia obsahuje podrobné informácie o údajových typoch F, G, K, O, P a R a ďalšie informácie o argumente type_text.

Údajové typy F a G

Ak sa používajú údajové typy F a G, funkcia môže modifikovať medzipamäť reťazca alokovanú programom Microsoft Excel. Ak je kód návratovej hodnoty F alebo G, program Microsoft Excel bude ignorovať hodnotu vrátenú funkciou. Namiesto toho program Microsoft Excel prehľadá zoznam argumentov funkcie a na návratovú hodnotu použije obsah medzipamäte prvého zodpovedajúceho údajového typu (F alebo G). Program Microsoft Excel pre argument alokuje 256 bajtov, takže funkcia môže vrátiť dlhší reťazec, ako prijala.

Na začiatok stránky

Údajový typ K

Údajový typ používa smerník na štruktúru FP premenlivej veľkosti. V knižnici DLL alebo zdroji kódu musí byť táto štruktúra definovaná nasledovne:

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

Deklarácia double array[1] alokuje pamäť iba pre pole s jedným prvkom. Počet prvkov v skutočnom poli sa rovná počtu riadkov vynásobenému počtom stĺpcov.

Na začiatok stránky

Údajový typ O

Údajový typ O je možné použiť len ako argument, nie ako návratovú hodnotu. Predáva funkcii tri položky: smerník na počet riadkov v poli, smerník na počet stĺpcov v poli a smerník na dvojrozmerné pole čísel s pohyblivou rádovou čiarkou.

Namiesto vrátenia hodnoty môže funkcia modifikovať pole predané ako údajový typ O. To sa dá dosiahnuť použitím argumentu type_text v tvare ">O" . Ďalšie informácie sú uvedené nižšie v časti „Zmena na mieste — funkcie deklarované s návratovým typom void“.

Údajový typ O bol vytvorený kvôli priamej kompatibilite s knižnicami DLL vytvorenými v jazyku Fortran, ktoré predávajú argumenty pomocou referencie.

Na začiatok stránky

Údajový typ P

Údajový typ P je smerník na štruktúru OPER. Štruktúra OPER obsahuje 8 bajtov údajov, za ktorými nasleduje 2 bajtový identifikátor určujúci typ údajov. Pomocou údajového typu P môže funkcia v knižnici DLL alebo zdroj kódu prijať a vrátiť akýkoľvek údajový typ programu Microsoft Excel.

Štruktúra OPER je definovaná nasledovne:

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;

Pole type obsahuje jednu z nasledovných hodnôt.

Typ

Popis

Použité pole val

1

Číslo

num

2

Reťazec (prvý bajt obsahuje dĺžku reťazca)

str

4

Boolean (logická hodnota)

bool

16

Chyba: chybové hodnoty sú:

0#NEPLATNÝ!

7#DELENIENULOU!

15#HODNOTA!

23#ODKAZ!

29#NÁZOV?

36#ČÍSLO!

42#NEDOSTUPNÝ

err

64

Pole

array

128

Chýbajúci argument

256

Prázdna bunka

Posledné dve hodnoty je možné použiť iba ako argumenty, nie návratové hodnoty. Hodnota chýbajúceho argumentu (128) sa predá, ak volajúci vynechá argument. Prázdna hodnota bunky (256) sa predá, ak volajúci predá odkaz na prázdnu bunku.

Na začiatok stránky

Údajový typ R – volanie funkcií programu Microsoft Excel z knižníc DLL

Údajový typ R je smerník na štruktúru XLOPER, čo je vylepšená verzia štruktúry OPER. V programe Microsoft Excel vo verzii 4.0 alebo novšej môžete použiť údajový typ R na tvorbu knižníc DLL alebo zdrojov kódu, ktoré volajú funkcie programu Microsoft Excel. Pomocou štruktúry XLOPER môže funkcia knižnice DLL okrem predávania údajov predávať aj referencie na hárky a implementovať kontrolu toku. Úplný popis údajového typu R a aplikačného programového rozhrania (API) programu Microsoft Excel siaha mimo rozsah tejto témy. Podrobné informácie o údajovom type R, rozhraní (API) programu Microsoft Excel a iných technických aspektoch programu Microsoft Excel môžete nájsť v publikácii Microsoft Office XP Developer's Guide.

Na začiatok stránky

Nestále funkcie a prepočítavanie

Program Microsoft Excel zvyčajne vypočíta hodnotu funkcie knižnice DLL (alebo zdroja kódu) pri jej vložení do bunky, ak sa zmení niektorý z jej predchodcov alebo pri výpočte hodnoty bunky v makre. Na hárku môžete označiť funkciu knižnice DLL alebo zdroja kódu ako nestálu, čo znamená, že sa prepočíta zakaždým, keď sa prepočíta hárok. Ak chcete označiť funkciu ako nestálu, pridajte výkričník (!) na koniec argumentu type_text.

Napríklad v programe Microsoft Excel pre systém Windows sa nasledujúci vzorec prepočíta zakaždým, keď sa prepočíta hárok:

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

Na začiatok stránky

Zmena na mieste – funkcie deklarované s návratovým typom void

Na označenie typu návratovej hodnoty v argumente type_text môže použiť aj jednu číslicu n, kde n je číslo od 1 po 9. To predstavuje informáciu pre program Microsoft Excel, aby zmenil premennú na mieste označenú n-tým argumentom v argumente type_text namiesto vrátenia hodnoty. Nazýva sa to aj zmena na mieste. N-tý argument musí byť údajový typ predávaný referenciou (C, D, E, F, G, K, L, M, N, O, P alebo R). Funkcia knižnice DLL alebo zdroja kódu musí byť v jazyku C deklarovaná použitím kľúčového slova void (alebo v jazyku Pascal kľúčovým slovom procedure).

Napríklad funkcia knižnice DLL akceptujúca argumenty reťazec zakončený nulovým znakom a dva smerníky na celé čísla môže zmeniť reťazec na mieste. V argumente type_text použite hodnotu "1FMM" a deklarujte funkciu s návratovým typom void.

Verzie programu Microsoft Excel staršie ako 4.0 používali na zmenu na mieste prvého argumentu znak >. Neexistoval žiadny spôsob zmeny iného ako prvého argumentu. V programe Microsoft Excel 4.0 a novších verziách je znak > ekvivalentom n = 1.

Na začiatok stránky

Rozšírte svoje zručnosti
Preskúmať školenie
Buďte medzi prvými, ktorí získajú nové funkcie
Pridajte sa k insiderom pre Office

Boli tieto informácie užitočné?

Ďakujeme za vaše pripomienky!

Ďakujeme vám za pripomienky. Pravdepodobne vám pomôže, ak vás spojíme s pracovníkom podpory pre Office.

×