Använda funktionerna ANROPA och REGISTRERA

Gäller för
Excel för Microsoft 365 Excel för Microsoft 365 för Mac Excel 2024 Excel 2024 för Mac Excel 2021 Excel 2021 för Mac Excel 2019 Excel 2016 Excel för iPad Excel för iPhone Excel för Android-surfplattor Excel för Android-telefoner

Viktigt!

Försiktighet Om registret redigeras felaktigt kan det skada operativsystemet allvarligt, vilket kräver att du installerar om det. Microsoft kan inte garantera att problem som orsakats av felaktig redigering av registret går att lösa. Innan du redigerar registret bör du säkerhetskopiera alla viktiga data. Om du vill ha den senaste informationen om att använda och skydda datorns register läser du i Microsoft Windows Hjälp.

I den här artikeln beskrivs formelsyntaxen för och användningen av funktionerna ANROPA, REGISTRERA och REGISTRERA.ID i Microsoft Excel.

Obs

Funktionerna ANROPA och REGISTRERA är inte tillgängliga i Excel för webben.

Den här artikeln innehåller följande avsnitt

Beskrivning

Nedan beskrivs de argument- och returvärdedatatyper som används av funktionerna ANROPA, REGISTRERA och REGISTER.ID . Argument och returvärden skiljer sig något beroende på din operativsystemmiljö och dessa skillnader noteras i datatypstabellen.

Överst på sidan

Datatyper

I funktionerna ANROPA, REGISTRERA och REGISTRERA.ID anger argumentet, typ datatypen för det returnerade värdet och datatyperna för alla argument till DLL-funktionen eller kodresursen. Det första tecknet i typ representerar datatypen för det returnerade värdet. De övriga tecknen anger datatyperna för alla argumenten. Exempelvis krävs typ-argumentet "BIB" för en DLL-funktion som returnerar ett flyttal och som använder ett heltal och ett flyttal som argument.

Nedanstående tabell innehåller en fullständig lista över de datatypkoder som Microsoft Excel känner igen, en beskrivning av varje datatyp, hur argumenten eller det returnerade värdet överförs, samt en typisk deklaration i programmeringsspråket C för datatypen i fråga.

Kod Beskrivning Överförs av C-deklaration
En Logiskt
(FALSKT = 0), SANT = 1)
Värde short int
B 8-byte flyttalsvärde enligt IEEE Värde
(Windows)
Referens (Macintosh)
Dubbel
(Windows)
double * (Macintosh)
c Nollavslutad sträng (maxlängd på sträng = 255) Referens char *
:d Byte-räknad sträng (första byte innehåller strängens längd, maxlängd på sträng = 255 tecken) Referens Unsigned char *
R 8-byte flyttalsvärde enligt IEEE Referens double *
f Nollavslutad sträng (maxlängd på sträng = 255 tecken) Referens (modifiera på plats) char *
G Byte-räknad sträng (första byte innehåller strängens längd, maxlängd på sträng = 255 tecken) Referens (modifiera på plats) unsigned char *
H 2-byte heltal utan tecken Värde unsigned short int
I 2-byte heltal med tecken Värde short int
J 4-byte heltal med tecken Värde long int
N Matris Referens FP *
l Logiskt
(FALSKT = 0, SANT = 1)
Referens short int *
"m" 2-byte heltal med tecken Referens short int *
N 4-byte heltal med tecken Referens long int *
O Matris Referens Tre argument överförs:
unsigned short int *
unsigned short int *
double [ ]
P Microsoft Excel datastruktur OPER Referens OPER *
R Microsoft Excel datastruktur XLOPER Referens XLOPER *

Överst på sidan

Kommentarer

  • Deklarationer i C-språket grundas på antagandet att din kompilator använder 8-byte double, 2-byte short int och 4-byte long int som standard.
  • I programmeringsmiljön Microsoft Windows deklareras alla pekare som far-pekare. Du måste till exempel deklarera D-datatypkoden som unsigned char far * i Microsoft Windows.
  • Alla funktioner i DLL-bibliotek och kodresurser anropas med hjälp av Pascals anropskonvention. De flesta C-kompilatorer tillåter dig att använda Pascals anropskonvention genom att lägga till nyckelordet Pascal i funktionsdeklarationen, enligt följande exempel: pascal void main (rows,columns,a)
  • Om en funktion använder en datatyp för direktreferens för sitt returneringsvärde kan du skicka en null-pekare som returvärde. Microsoft Excel tolkar null-pekaren som #NUM! felvärdet #REFERENS!.

Överst på sidan

Ytterligare information om datatyper

Detta avsnitt innehåller detaljerad information om datatyperna F, G, K, O, P och R samt annan information om argumentet type_text.

Datatyperna F och G

Med hjälp av datatyperna F och G kan en funktion modifiera en strängbuffert som skapats av Microsoft Excel. Om typkoden för det returnerade värdet är F eller G ignorerar Microsoft Excel funktionens returvärde. Microsoft Excel söker i stället igenom listan över funktionsargument efter den första motsvarande datatypen (F eller G) och använder sedan det aktuella innehållet i strängbufferten som det returnerade värdet. Microsoft Excel använder 256 byte för argumentet så att funktionen kan returnera en större sträng än den har tagit emot.

Överst på sidan

Datatyp K

Datatypen K använder en pekare till en FP-struktur med variabel storlek. Strukturen i DLL eller kodresursen definieras på följande sätt:

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

Deklarationen double array[1] allokerar endast lagring för en matris med ett element. Antalet element i den verkliga matrisen motsvarar antalet rader multiplicerat med antalet kolumner.

Överst på sidan

Datatyp O

Datatypen O kan endast användas som ett argument, inte som ett returnerat värde. Datatypen överför tre element: en pekare till antalet rader i en matris, en pekare till antalet kolumner i en matris och en pekare till en tvådimensionell matris med flyttalsvärden.

I stället för att returnera ett värde kan en funktion ändra en matris som överförs av datatypen O. Det gör du genom att använda ">O" som type_text argument. Mer information finns i "Ändra på plats – Funktioner deklareras som ogiltiga" nedan.

Datatypen O har skapats för direkt kompatibilitet med Fortran DLL-funktioner, som överför argument med referens.

Överst på sidan

Datatyp P

Datatypen P är en pekare till en OPER-struktur. OPER-strukturen innehåller 8 byte data följt av en id-kod på 2 byte som anger datatypen. Med hjälp av datatypen P kan en DLL-funktion eller en kodresurs anta och returnera alla datatyper i Microsoft Excel.

OPER-strukturen definieras på följande sätt:

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;

Fältet type innehåller ett av följande värden.

Typ Beskrivning Värdefält att använda
1 Numerisk num
2 Sträng (första byte innehåller strängens längd) str
4 Boolesk (logisk) bool
16 Fel: Felvärdena är:
0#Skärning!
7#Division/0!
15#Värdefel!
23#Referens!
29#Namn?
36#Ogiltigt!
42#Saknas!
fel
64 Matris matris
128 Argument saknas
256 Tom cell

De sista två värdena kan endast användas som argument, inte som returnerade värden. Värdet för saknade argument (128) överförs när anroparen utelämnar ett argument. Värdet för tom cell (256) överförs när anroparen överför en referens till en tom cell.

Överst på sidan

Datatyp R – Anropa Microsoft Excel-funktioner från DLL-filer

Datatypen R är en pekare till en XLOPER-struktur, som är en förbättrad version av OPER-strukturen. I Microsoft Excel version 4.0 och senare kan du använda datatypen R för att skriva DLL-filer och kodresurser som anropar Microsoft Excel-funktioner. Med XLOPER-strukturen kan en DLL-funktion överföra bladreferenser och införa flödesreglering, förutom att den kan överföra data. En fullständig beskrivning av datatyp R och Microsoft Excel API-gränssnitt ryms inte i detta hjälpavsnitt. Microsoft Office XP Developer's Guide innehåller detaljerad information om datatypen R, Microsoft Excel API och många andra tekniska aspekter av Microsoft Excel.

Överst på sidan

Ej beständiga funktioner och omräkning

Microsoft Excel beräknar normalt en DLL-funktion (eller en kodresurs) endast när den matas in i en cell, när någon av dess överordnade ändras eller när cellen beräknas under ett makro. I ett kalkylblad kan en DLL-funktion eller kodresurs göras ej beständig, vilket innebär att den räknas om varje gång kalkylbladet räknas om. Om en funktion ska göras ej beständig infogas ett utropstecken (!) som sista tecken i argumentet typ.

Exempel: I Microsoft Excel för Windows utför följande kalkylbladsformel omräkning varje gång kalkylbladet räknas om:

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

Överst på sidan

Modifiera på plats – funktioner utan returvärde

Man kan använda en enstaka siffra, n, för den returnerade typkoden i typ, där n är ett tal mellan 1 och 9. Detta instruerar Microsoft Excel att modifiera variabeln på den plats som utpekas med det n:te argumentet i typ, i stället för att returnera ett värde. Detta brukar även kallas att modifiera på plats. Det n:te argumentet måste vara en datatyp som överförs med referens (C, D, E, F, G, K, L, M, N, O, P eller R). DLL-funktionen eller kodresursen måste också deklareras med nyckelordet void i C-språket (eller nyckelordet procedure i språket Pascal).

Exempel: En DLL-funktion som antar en nollavslutad sträng och två pekare till heltal som argument kan modifiera strängen på plats. Använd "1FMM" för argumentet type_text och deklarera funktionen som ogiltig (void).

Tidigare versioner än Microsoft Excel 4.0 använde > tecknet för att ändra det första argumentet. Det gick inte att ändra något annat argument än det första. Tecknet > motsvarar n = 1 i Microsoft Excel version 4.0 och senare.

Överst på sidan