NB!: Ettevaatust! Registri vale redigeerimine võib teie operatsioonisüsteemi tõsiselt kahjustada, tekitades vajaduse see uuesti installida. Microsoft ei taga, et registri valest redigeerimisest tulenevaid probleeme on võimalik lahendada. Enne registri redigeerimist varundage kõik väärtuslikud andmed. Värskeima teabe arvuti registri kasutamise ja kaitsmise kohta leiate Microsoft Windowsi spikrist.
Selles artiklis kirjeldatakse Microsoft Exceli funktsioonide CALL, REGISTER ja REGISTER.ID valemisüntaksit ja kasutamist.
Märkus.: Funktsioonid CALL ja REGISTER pole Exceli veebirakendus saadaval.
Selle artikli teemad
Kirjeldus
Järgmises artiklis kirjeldatakse funktsioonide CALL, REGISTER ja REGISTER.ID kasutatud argumentide ja tagastusväärtuse andmetüüpe. Argumendid ja tagastusväärtused erinevad pisut olenevalt teie töökeskkonnast ja need erinevused on ära toodud andmetüübi tabelis.
Andmetüübid
Funktsioonides CALL, REGISTER ja REGISTER.ID määrab argument teksti_tüüp tagastusväärtuse andmetüübi ja DLL-funktsioonide või koodiressursside kõigi argumentide andmetüübid. Argumendi teksti_tüüp esimene märk määrab tagastusväärtuse andmetüübi. Ülejäänud märgid osutavad kõigi argumentide andmetüüpidele. Näiteks DLL-funktsioon, mis tagastab ujukomaarvu ja tunnistab argumentidena täisarvu ja ujukomaarvu, nõuab, et argumendiks teksti_tüüp oleks "BIB".
Järgnev tabel sisaldab Microsoft Exceli poolt tunnustatud andmetüüpide koodide täielikku loendit, iga andmetüübi kirjeldust, argumendi või tagastusväärtuse edastusviisi ning andmetüübi tüüpdeklaratsiooni C-programmeerimiskeeles.
Kood |
Kirjeldus |
Edastatakse |
C-deklaratsioon |
A |
Loogika (FALSE= 0, TRUE = 1) |
väärtus |
short int |
B |
IEEE 8-baidine ujukomaarv |
väärtus (Windows)viide (Macintosh) |
double (Windows)double * (Macintosh) |
C |
Tühja lõpuga string (stringi suurim pikkus = 255) |
viide |
char * |
D |
Baitides arvestatud string (esimene bait sisaldab stringi pikkust, stringi suurim pikkus = 255 märki) |
viide |
Unsigned char * |
E |
IEEE 8-baidine ujukomaarv |
viide |
double * |
F |
Tühja lõpuga string (stringi suurim pikkus = 255 märki) |
viide (muutmine kohapeal) |
char * |
G |
Baitides arvestatud string (esimene bait sisaldab stringi pikkust, stringi suurim pikkus = 255 märki) |
viide (muutmine kohapeal) |
unsigned char * |
H |
Märgita 2-baidine täisarv |
väärtus |
unsigned short int |
I |
Märgiga 2-baidine täisarv |
väärtus |
short int |
J |
Märgiga 4-baidine täisarv |
väärtus |
long int |
K |
Massiiv |
viide |
FP * |
L |
Loogika (FALSE= 0, TRUE = 1) |
viide |
short int * |
M |
Märgiga 2-baidine täisarv |
viide |
short int * |
N |
Märgiga 4-baidine täisarv |
viide |
long int * |
O |
Massiiv |
viide |
Edastatakse kolme argumenti: unsigned short int * unsigned short int * double [ ] |
P |
Microsoft Exceli OPER-andmestruktuur |
viide |
OPER * |
R |
Microsoft Exceli XLOPER-andmestruktuur |
viide |
XLOPER * |
Kommentaarid
-
C-keele deklaratsioonid põhinevad eeldusel, et kompilaatori vaikeväärtusteks on 8-baidised kahekordsed arvud, 2-baidised lühikesed täisarvud ja 4-baidised pikad täisarvud.
-
Microsoft Windowsi programmeerimiskeskkonnas on kõik viidad kaugviidad. Näiteks tuleb teil Microsoft Windowsis deklareerida D-andmetüübi kood kui unsigned char far *.
-
Kõiki DLL-teekide ja koodiressursside funktsioone nimetatakse Pascali kutsereeglistiku järgi. Enamik C-kompilaatoreid lubab kasutada Pascali kutsereeglistikku, lisades funktsiooni deklaratsioonile Pascali võtmesõna, nagu näitab järgnev näide: pascal void main (rows,columns,a)
-
Kui funktsioon kasutab tagastusväärtuse jaoks andmetüüpi läbiviidav andmetüüp, saate tagastusväärtusena edastada nullkursori. Microsoft Excel tõlgendab nullkursorit #NUM! #NUM!.
Lisateave andmetüüpide kohta
See lõik sisaldab üksikasjalikku teavet F-, G-, K-, O-, P- ja R-andmetüüpide kohta ja muud teavet argumendi teksti_tüüp kohta.
F- ja G-andmetüübid
F- ja G-andmetüüpide puhul võib funktsioon teisendada Microsoft Exceli määratud stringipuhvri. Kui tagastusväärtuse tüübikood on F või G, ignoreerib Microsoft Excel funktsiooni tagastusväärtust. Selle asemel leiab Microsoft Excel funktsiooni argumentide loendist esimese vastava andmetüübi (F või G) ja võtab siis tagastusväärtusena määratud stringipuhvri praeguse sisu. Microsoft Excel määrab argumendile 256 baiti, nii võib funktsioon tagastada pikema stringi kui vastuvõetud string.
K-andmetüüp
K-andmetüüp kasutab viita muutuva suurusega FP-struktuurile. See struktuur tuleb määratleda DLL-teegis või koodiressursis järgnevalt:
typedef struct _FP
{ unsigned short int rows; unsigned short int columns; double array[1]; /* Actually, array[rows][columns] */ } FP;
Deklaratsioon double array[1] määrab mälu ainult ühe elemendiga massiivile. Tegeliku massiivi elementide arv võrdub ridade arvu ja veergude arvu korrutisega.
O-andmetüüp
O-andmetüüpi saab kasutada ainult argumendina, mitte tagastusväärtusena. See edastab kolme üksust: viita massiivi ridade arvule, viita massiivi veergude arvule ja viita ujukomaarvude kahemõõtmelisele massiivile.
Väärtuse tagastamise asemel võib funktsioon muuta O-andmetüübi poolt edastatud massiivi. Selleks võib kasutada argumendina teksti_tüüp stringi ">O". Lisateabe saamiseks vt allpool osa "Muutmine kohapeal – tühistatud funktsioonid".
O-andmetüüp loodi otseühilduvuse saavutamiseks Fortrani DLL-teekidega, mis edastavad argumente viitena.
P-andmetüüp
P-andmetüüp on viit OPER-struktuurile. OPER-struktuur sisaldab 8 baiti andmeid, millele järgneb 2-baidine andmetüüpi määrav identifikaator. P-andmetüübi puhul võib DLL-funktsioon või koodiressurss võtta ja tagastada suvalist Microsoft Exceli andmetüüpi.
OPER-struktuuri määratletakse järgnevalt:
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;
Tüübiväli sisaldab ühte nendest väärtustest.
Tüüp |
Kirjeldus |
Kasutatav väärtuste väli |
1 |
Arvuline |
num |
2 |
String (esimene bait sisaldab stringi pikkust) |
str |
4 |
Kahendmuutuja (loogika) |
bool |
16 |
Viga: veaväärtused on: 0#NULL! 7#DIV/0! 15#VALUE! 23#REF! 29#NAME? 36#NUM! 42#N/A |
err |
64 |
Massiiv |
array |
128 |
Puuduv argument |
|
256 |
Tühi lahter |
Viimast kahte väärtust saab kasutada ainult argumentidena, mitte tagastusväärtustena. Puuduva argumendi väärtus (128) edastatakse, kui kutsuja jätab argumendi ära. Tühja lahtri väärtus (256) edastatakse, kui kutsuja edastab viite tühjale lahtrile.
R-andmetüüp – Microsoft Exceli funktsioonide kutsumine DLL-teekidest
R-andmetüüp on viit XLOPER-struktuurile, mis on OPER-struktuuri laiendatud versioon. Microsoft Exceli versioonis 4.0 ja hilisemates versioonides võite kasutada R-andmetüüpi DLL-teekide ja koodiressursside kirjutamiseks, mis kutsuvad Microsoft Exceli funktsioone. XLOPER-struktuuri puhul võib DLL-funktsioon lisaks andmete edastamisele edastada leheviiteid ja teostada voogude juhtimist. R-andmetüübi ja Microsoft Exceli rakendusliidese (API-liidese) täielik kirjeldamine jääb selle teema ulatusest välja. Käsiraamat Microsoft Office XP Developer's Guide sisaldab üksikasjalikku teavet R-andmetüübi, Microsoft Exceli API-liidese ja paljude teiste Microsoft Exceli tehniliste aspektide kohta.
Hävivad funktsioonid ja ümberarvutus
Microsoft Excel arvutab tavaliselt DLL-funktsiooni või koodiressurssi ainult siis, kui see on sisestatud lahtrisse, kui muutub üks selle eelkäijatest või kui lahtrit arvutatakse makro toimimise ajal. Võite muuta töölehel DLL-funktsiooni või koodiressursi hävivaks, mis tähendab, et see arvutab ümber iga kord, kui arvutatakse ümber töölehte. Funktsiooni muutmiseks hävivaks lisage argumendi teksti_tüüp viimase märgina hüüumärgi (!).
Näiteks programmis Microsoft Excel for Windows arvutab järgmine töölehe valem ümber iga kord, kui arvutatakse ümber töölehte:
CALL("Kernel32";"GetTickCount";"J!")
Muutmine kohapeal – tühjad funktsioonid
Võite kasutada tagastustüübi koodina argumendis teksti_tüüp ainsat märki n, kus n on arv vahemikus 1-9. See annab Microsoft Excelile käsu väärtuse tagastamise asemel muuta muutujat asukohas, kuhu osutab argument number n argumendis teksti_tüüp. Seda nimetatakse ka muutmiseks kohapeal. Argument number n peab kuuluma andmetüüpi edastatakse-viitena (C, D, E, F, G, K, L, M, N, O, P või R). DLL-funktsioon või koodiressurss tuleb samuti deklareerida void võtmesõnaga C-keeles või procedure võtmesõnaga Pascalis.
Näiteks võib DLL-funktsioon, mis võtab argumentidena tühja lõpuga stringi ja kaks viita täisarvudele, muuta stringi kohapeal. Kasutage argumendina teksti_tüüp stringi "1FMM" ja tühistage funktsioon.
Varasemad versioonid kui Microsoft Excel 4.0 kasutasid esimese argumendi muutmiseks kohapeal märki >; polnud mingit võimalust muuta muud argumenti kui esimest. Märk > on ekvivalentne võrdusega n = 1 Microsoft Exceli versioonis 4.0 ja hilisemates versioonides.