Tärkeää: Varoitus Rekisterin virheellinen muuttaminen saattaa aiheuttaa vakavia vaurioita käyttöjärjestelmään, joka joudutaan ehkä asentamaan uudelleen. Microsoft ei voi taata, että rekisterin virheellisestä muuttamisesta aiheutuvat ongelmat voidaan ratkaista. Varmuuskopioi kaikki tärkeät tiedot, ennen kuin muokkaat rekisteriä. Uusimmat tietokoneen rekisterin käyttämistä ja suojaamista koskevat tiedot ovat saatavissa Microsoft Windowsin ohjeessa.
Tässä artikkelissa kuvataan Microsoft Excelin KUTSU-, REKISTERÖI- ja REKISTERI.TUNNUS-funktioiden kaavasyntaksi ja käyttö.
Huomautus: KUTSU- ja REKISTERÖI-funktiot eivät ole käytettävissä Excelin verkkoversio.
Artikkelin sisältö
Kuvaus
Seuraavassa kuvataan KUTSU-, REKISTERÖI- ja REGISTER.ID-funktioiden käyttämät argumentti- ja palautusarvotietotyypit. Argumentit ja palautusarvot vaihtelevat hieman käyttöympäristön mukaan, ja nämä erot näkyvät tietotyyppitaulukossa.
Tietotyypit
KUTSU-, REKISTERÖI- ja REGISTER.ID-funktioissa type_text-argumentti määrittää palautusarvon tietotyypin ja kaikkien DLL-funktion tai koodiresurssin argumenttien tietotyypit. type_text ensimmäinen merkki määrittää palautusarvon tietotyypin. Muut merkit ilmaisevat kaikkien argumenttien tietotyypit. Esimerkiksi DLL-funktio, joka palauttaa liukulukuarvon ja ottaa kokonaisluvun ja liukulukun argumentteina, vaatisi type_text-argumentille "BIB".
Seuraavassa taulukossa on luettelo kaikista Microsoft Excelin tunnistamista tietotyypeistä, kunkin tietotyypin kuvaus, argumentin tai palautusarvon välitystapa ja tietotyypin tavallisin C-kielinen määrittely:
Koodi |
Kuvaus |
Välitystapa |
C-kielinen määrittely |
- |
Totuusarvo (EPÄTOSI = 0), TOSI = 1) |
Arvo |
short int |
B |
8-tavuinen IEEE-liukuluku |
Arvo (Windows)Viittaus (Macintosh) |
double (Windows)double * (Macintosh) |
c |
Nollaan päättyvä merkkijono (enimmäispituus 255 merkkiä) |
Viittaus |
char * |
:d |
Tavuina laskettu merkkijono (ensimmäinen tavu sisältää jonon pituuden, enimmäispituus 255 merkkiä) |
Viittaus |
Unsigned char * |
E |
8-tavuinen IEEE-liukuluku |
Viittaus |
double * |
täydellinen |
Nollaan päättyvä merkkijono (enimmäispituus 255 merkkiä) |
Viittaus (suora muokkaus) |
char * |
"Y" |
Tavuina laskettu merkkijono (ensimmäinen tavu sisältää jonon pituuden, enimmäispituus 255 merkkiä) |
Viittaus (suora muokkaus) |
unsigned char * |
T |
Etumerkitön 2-tavuinen kokonaisluku |
Arvo |
unsigned short int |
i |
Etumerkillinen 2-tavuinen kokonaisluku |
Arvo |
short int |
J |
Etumerkillinen 4-tavuinen kokonaisluku |
Arvo |
long int |
k |
Matriisi |
Viittaus |
FP * |
l |
Totuusarvo (EPÄTOSI = 0, TOSI = 1) |
Viittaus |
short int * |
"m" |
Etumerkillinen 2-tavuinen kokonaisluku |
Viittaus |
short int * |
EI |
Etumerkillinen 4-tavuinen kokonaisluku |
Viittaus |
long int * |
O |
Matriisi |
Viittaus |
Kolme argumenttia siirretään: unsigned short int * unsigned short int * double [ ] |
:p |
Microsoft Excelin OPER-tietorakenne |
Viittaus |
OPER * |
r |
Microsoft Excelin XLOPER-tietorakenne |
Viittaus |
XLOPER * |
Huomautuksia
-
C-kieliset määrittelyt perustuvat oletukseen, että käännösohjelma käyttää 8-tavuisia kaksinkertaisia, 2-tavuisia lyhyitä ja 4-tavuisia pitkiä kokonaislukuja.
-
Microsoft Windows -ohjelmointiympäristössä kaikki osoittimet ovat etäosoittimia. Esimerkiksi Microsoft Windowsin D-tietotyypin koodiksi on määritettävä unsigned char far *.
-
Kaikki DLL-funktiot ja koodiresurssin toiminnot välitetään Pascal-kutsuilla. Useimmissa C-käännösohjelmissa voidaan käyttää Pascal-kutsuja lisäämällä funktion määritykseen avainsana pascal, kuten seuraavassa esimerkissä: pascal void main (rows,columns,a)
-
Jos funktio käyttää palautusarvon tietotyyppinä viittausvälitystä, voit välittää palautusarvoksi nollaosoittimen. Microsoft Excel tulkitsee nollaosoittimen #LUKU! ‑virhearvoksi.
Lisätietoja muista tietotyypeistä
Tässä osassa käsitellään tietotyyppejä F, G, K, O, P ja R. Osassa on myös lisätietoja tyyppi_teksti-argumentista.
Tietotyypit F ja G
Kun käytetään tietotyyppejä F ja G, funktio voi muokata Microsoft Excelin varaamaa merkkijonopuskuria. Jos palautusarvon tietotyyppi on F tai G, Microsoft Excel ohittaa funktion palauttaman arvon. Sen sijaan Microsoft Excel etsii argumenttiluettelosta ensimmäisen vastaavan tietotyypin (F tai G) ja vie varatun merkkijonopuskurin senhetkisen sisällön palautusarvoksi. Microsoft Excel varaa argumentille 256 tavua, joten funktio saattaa palauttaa suuremman merkkijonon kuin se otti vastaan.
Tietotyyppi K
Tietotyyppi K käyttää osoitinta muuttuvankokoiseen FP-rakenteeseen. Tämä rakenne on määriteltävä DLL:ssä tai koodiresurssissa seuraavasti:
typedef struct _FP
{ unsigned short int rows; unsigned short int columns; double array[1]; /* Actually, array[rows][columns] */ } FP;
Määritys double array[1] varaa muistitilaa vain yksiosaiselle matriisille. Matriisin osien määrä on rivien ja sarakkeiden määrien tulo.
Tietotyyppi O
Tietotyyppiä O voidaan käyttää vain argumenttina, ei palautusarvona. Se välittää osoittimen kolmeen kohtaan: matriisin rivien määrään, matriisin sarakkeiden määrään ja kaksiulotteiseen liukulukumatriisiin.
Arvon palauttamisen sijasta funktio voi muokata O-tietotyypin välittämää matriisia. Tätä varten tyyppi_teksti-argumentiksi voidaan määrittää ">O". Saat lisätietoja tämän ohjeaiheen kohdassa "Suora muokkaus – Void-funktiot".
O-tietotyyppi takaa suoran yhteensopivuuden Fortran DLL:n kanssa, joka välittää argumentit viittauksina.
Tietotyyppi P
Tietotyyppi P on osoitin OPER-rakenteeseen. OPER-rakenteessa on 8 datatavua ja niiden jäljessä 2-tavuinen tietotyypin tunniste. Kun käytät P-tietotyyppiä, DLL-funktio ja koodiresurssi pystyvät ottamaan vastaan ja palauttamaan kaikkia Microsoft Excelin tietotyyppejä.
OPER-rakenne määritellään seuraavasti:
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;
Type-kentässä on jokin näistä arvoista:
Tyyppi |
Kuvaus |
Käytettävä Val-kenttä |
1 |
Numeerinen |
num |
2 |
Merkkijono (ensimmäinen tavu osoittaa jonon pituuden) |
str |
4 |
Totuusarvolauseke |
bool |
16 |
Virhearvo, joka voi olla jokin seuraavista: 0#TYHJÄ! 7#JAKO/0! 15#ARVO! 23#VIITTAUS! 29#NIMI? 36#LUKU! 42#PUUTTUU! |
err |
64 |
Matriisi |
array |
128 |
Puuttuva argumentti |
|
256 |
Tyhjä solu |
Kahta viimeistä arvoa voidaan käyttää vain argumentteina, ei palautusarvoina. Ohjelma palauttaa Puuttuva argumentti ‑arvon (128), kun kutsujasta puuttuu argumentti. Ohjelma palauttaa Tyhjä solu -arvon (256), kun kutsuja välittää viittauksen tyhjään soluun.
Tietotyyppi R – Microsoft Excelin funktioiden kutsuminen DLL:stä
Tietotyyppi R on osoitin XLOPER-rakenteeseen, joka on OPER-rakenteen laajennettu versio. Jos käytät Microsoft Excel 4.0:aa tai uudempaa versiota, voit käyttää R-tietotyyppiä Microsoft Excelin funktioita kutsuvien DLL-funktioiden ja koodiresurssien kirjoittamiseen. XLOPER-rakenteen avulla DLL-funktio voi välittää taulukkoviittauksia ja käyttää vuonohjausta tietojen välittämisen lisäksi. R-tietotyypin ja Microsoft Excelin ohjelmointirajapinnan tarkempi kuvaus ei kuulu tämän ohjeen aihepiiriin. Microsoft Office XP Developer's Guide sisältää yksityiskohtaiset tiedot R-tietotyypistä, Microsoft Excelin ohjelmointirajapinnasta ja monista muista Microsoft Excelin teknisistä ominaisuuksista.
Muuttuvat funktiot ja uudelleenlaskenta
Microsoft Excel laskee yleensä DLL-funktion (tai koodiresurssin) vain, kun funktio kirjoitetaan soluun, kun jokin sen edeltäjistä muuttuu tai kun ohjelma laskee solun makron suorittamisen yhteydessä. Taulukossa DLL-funktiosta tai koodiresurssista voi tehdä muuttuvan, jolloin ohjelma laskee sen aina taulukon uudelleenlaskennan yhteydessä. Funktio muutetaan muuttuvaksi lisäämällä huutomerkki (!) tyyppi_teksti-argumentin viimeiseksi merkiksi.
Esimerkiksi Microsoft Windows Excelissä ohjelma laskee seuraavan taulukkokaavan aina taulukon uudelleenlaskennan yhteydessä:
KUTSU(”Kernel32”,”GetTickCount”,”J!”)
Suora muokkaus – Void-funktiot
Voit antaa tyyppi_teksti-argumentin palautusarvon tyypiksi luvun n, joka on 1–9. Tällöin Microsoft Excel ei palauta arvoa vaan muokkaa muuttujaa, joka on tyyppi_teksti-argumentin n:nnen argumentin osoittamassa paikassa. Tätä kutsutaan myös suoraksi muokkaukseksi. Argumentin n on oltava välitysviittaus (C, D, E, F, G, K, L, M, N, O, P tai R). Tällöin myös DLL-funktio tai koodiresurssi on määritettävä C-kielessä avainsanalla void (tai avainsanalla procedure Pascal-kielessä).
DLL-funktio, jonka argumentteina voi olla nollaan päättyvä merkkijono ja kaksi kokonaislukuihin osoittavaa osoitinta, voi muokata merkkijonoa arvon palauttamisen sijasta. Anna tyyppi_teksti-argumentin arvoksi "1FMM" ja määritä funktio void-funktioksi.
Microsoft Excel 4.0:aa aiemmissa versioissa käytettiin >-merkkiä ensimmäisen argumentin muokkaamiseen. mitään muuta argumenttia ei voi muokata kuin ensimmäistä. > on sama kuin n = 1 Microsoft Excelin versiossa 4.0 ja uudemmissa versioissa.