KUTSU- ja REKISTERÖI-funktioiden käyttäminen

Käytetään kohteeseen
Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel 2024 Excel 2024 for Mac Excel 2021 Excel 2021 for Mac Excel 2019 Excel 2016 Excel for iPad Excel for iPhone Excel for Android (tabletit) Excel for Android (matkapuhelimet)

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 verkkoversiossa.

Artikkelin sisältö

Kuvaus

Seuraavassa kuvataan KUTSU-, REKISTERÖI- ja REGISTER.ID funktioiden käyttämät argumenttien ja palautusarvojen tietotyypit. Argumentit ja palautusarvot eroavat hieman toisistaan käyttöympäristön mukaan, ja nämä erot on mainittu tietotyyppien taulukossa.

Sivun alkuun

Tietotyypit

KUTSU-, REKISTERÖI- ja REGISTER.ID-funktioissa type_text-argumentti määrittää palautusarvon tietotyypin ja DLL-funktion tai koodiresurssin kaikkien argumenttien tietotyypit. type_text ensimmäinen merkki määrittää palautusarvon tietotyypin. Muut merkit osoittavat kaikkien argumenttien tietotyypit. Esimerkiksi liukuluvun palauttavan DLL-funktion argumentteina voi olla kokonaislukuja ja liukulukuja, jolloin type_text argumentteina on oltava "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
- Loogiset
(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 Loogiset
(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 välitetään:
unsigned short int *
unsigned short int *
double [ ]
:p Microsoft Excelin OPER-tietorakenne Viittaus OPER *
r Microsoft Excelin XLOPER-tietorakenne Viittaus XLOPER *

Sivun alkuun

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.

Sivun alkuun

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.

Sivun alkuun

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.

Sivun alkuun

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. Voit tehdä tämän käyttämällä type_text argumenttina ">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.

Sivun alkuun

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.

Sivun alkuun

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.

Sivun alkuun

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

Sivun alkuun

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 edeltävissä versioissa merkkiä > käytettiin ensimmäisen argumentin muokkaamiseen paikan päällä. Muita argumentteja ei voitu muokata. Merkki > vastaa n = 1 Microsoft Excelin versiossa 4.0 ja uudemmissa versioissa.

Sivun alkuun