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ú k dispozícii v Excel pre web.
Obsah tohto článku
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.
Ú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 * |
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 svoju vrátenú hodnotu typ údajov odovzdávaný podľa odkazu, môžete ako vrátenú hodnotu odovzdať nulový ukazovateľ. Microsoft Excel bude interpretovať nulový ukazovateľ ako #NUM! .
Ď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.
Ú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.
Ú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 upraviť pole odovzdané typom údajov O. Ak to chcete urobiť, môžete ako argument type_text použiť >O. Ďalšie informácie nájdete nižšie v časti Úprava na mieste – funkcie deklarované ako neplatné.
Údajový typ O bol vytvorený kvôli priamej kompatibilite s knižnicami DLL vytvorenými v jazyku Fortran, ktoré predávajú argumenty pomocou referencie.
Ú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.
Ú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.
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!")
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 staršie ako Microsoft Excel 4.0 použili > znak na úpravu prvého argumentu na mieste. neexistuje žiadny spôsob, ako upraviť iný argument ako prvý. Znak > zodpovedá n = 1 v Microsoft Exceli verzie 4.0 a novšej.