Von Excel verwendete Datentypen
Gilt für: Excel 2013 | Office 2013 | Visual Studio
Microsoft Excel tauscht mehrere NSI C/C++-Typen und auch einige Excel-spezifische Datenstrukturen aus. Diese werden hier genannt, um einen Kontext für andere Abschnitte zu liefern. Im Thema xlfRegister (Formular 1) werden sie ausführlich erläutert.
ANSI C/C++-Typen
Zahlen
Alle Versionen von Excel:
8-Byte-Gleitkommawert mit doppelter Genauigkeit
[signed] short [int] – wird für boolesche Werte und auch ganze Zahlen verwendet.
unsigned short [int]
[signed long] int
Zeichenfolgen
Alle Versionen von Excel:
[signed] char * – BYTE-Zeichenfolgen mit NULL-Terminen von bis zu 255 Zeichen
unsigned char * – längengezählte Bytezeichenfolgen von bis zu 255 Zeichen
Ab Excel 2007:
- unsigned short * – Unicode-Zeichenfolgen mit bis zu 32.767 Zeichen, die NULL-terminiert oder längengezählt werden können
Alle Arbeitsblattnummern in Excel werden als "Double" gespeichert. Deshalb ist es nicht erforderlich (und führt tatsächlich zu einem kleinen Konvertierungsmehraufwand), bei Excel Add-In-Funktionen als Ganzzahl-Austauschtypen zu deklarieren.
Wenn Sie ganzzahlige Typen verwenden, überprüft Excel, ob die Eingaben innerhalb der Grenzwerte des Typs liegen, und sie schlagen mit #NUM! fehl, wenn sie außerhalb dieser Werte liegen. Die einzige Ausnahme: Wenn Sie eine Funktion zur Verwendung eines booleschen Arguments registrieren, das mit "short int" implementiert wurde, wird jede Eingabe von ungleich Null in "1" konvertiert, und Null wird direkt übergeben.
Excel-spezifische Datenstrukturen
Alle Versionen von Excel:
FP : Eine zweidimensionale Gleitkommaarraystruktur, die bis zu 65.356 Zeilen mit der maximalen Anzahl von Spalten unterstützt, die in der angegebenen Excel-Version unterstützt werden.
XLOPER : Eine Datenstruktur mit mehreren Typen, die alle Datentypen des Arbeitsblatts (einschließlich Fehlern), ganze Zahlen, Bereichsverweise, XLM-Makroblatt-Flusssteuerungstypen und einen internen binären Speicherdatentyp darstellen kann.
Hinweis
Zeichenfolgen werden als Bytezeichenfolgen mit Längenzählung von bis zu 255 Zeichen Länge dargestellt.
Ab Excel 2007:
FP12 – eine zweidimensionale Gleitkommaarraystruktur, die alle Zeilen und Spalten ab Excel 2007 unterstützt.
XLOPER12 : Eine Datenstruktur mit mehreren Typen, die alle Arbeitsblattdatentypen (einschließlich Fehlern), ganze Zahlen, Bereichsverweise, XLM-Makroblattflusssteuerungstypen und einen internen binären Speicherdatentyp darstellen kann.
Hinweis
Zeichenfolgen werden als Unicode-Zeichenfolgen mit Längenzählung von bis zu 32.767 Zeichen Länge dargestellt.
Registrierungscodes für Datentypen
XLL-Funktionen werden mit der C API-Funktion xlfRegister registriert, deren drittes Argument eine Zeichenfolge aus Buchstaben ist, die die Rückgabe- und Argumenttypen codieren. Diese Zeichenfolge enthält auch die Informationen, die Excel mitteilen, ob die Funktion veränderlich, threadsicher (ab Excel 2007) und gleichwertig mit einer Makrovorlage ist und ob sie ihr Ergebnis durch Änderung eines vorhandenen Arguments zurückgibt.
Die nachstehende Tabelle wird im Thema xlfRegister (Formular 1) reproduziert und ausführlicher erläutert. Sie wird hier wiedergegeben, um einen Kontext für den restlichen Abschnitt zu liefern. So könnte beispielsweise eine Funktion, die eine Unicode-Zeichenfolge mit Längenzählung verwendet (ab Excel 2007), so beschrieben werden: Verwendet ein Argument des Typs "C%".
Datentyp | Übergabe nach Wert | Übergabe nach Verweis (Zeiger) | Kommentare |
---|---|---|---|
Boolesch |
A |
L |
short (0=false oder 1=true) |
double |
B |
E |
|
Char* |
C, F |
ASCII-Bytezeichenfolge mit Null-Terminierung |
|
unsigned char * |
D, G |
ASCII-Bytezeichenfolge mit Längenzählung |
|
unsigned short * (ab Excel 2007) |
C%, F% |
Unicode-Zeichenfolge für Breitzeichen mit Null-Terminierung |
|
unsigned short * (ab Excel 2007) |
D%, G% |
Unicode-Zeichenfolge für Breitzeichen mit Längenzählung |
|
unsigned short [int] |
H |
WORD |
|
[signed] short [int] |
I |
M |
16-Bit |
[signed long] int |
J |
N |
32-Bit |
Array |
O |
Als drei Argumente nach Verweis übergeben: 1. short int *rows 2. short int *columns 3. Double *Array |
|
Array (ab Excel 2007) |
O% |
Als drei Argumente nach Verweis übergeben: 1. int *rows 2. int *columns 3. Double *Array |
|
FP |
K |
Gleitkomma-Arraystruktur |
|
FP12 (ab Excel 2007) |
K% |
Gleitkomma-Arraystruktur (großes Raster) |
|
XLOPER |
P |
Variablen-Arbeitsblattwerte und Arrays |
|
R |
Werte, Arrays und Bereichsbezüge |
||
XLOPER12 (ab Excel 2007) |
Q |
Variablen-Arbeitsblattwerte und Arrays |
|
U |
Werte, Arrays und Bereichsbezüge |
Die Typen C%, F%, D%, G%, K%, O%, Q und U waren in Microsoft Office Excel 2007 alle neu und werden in früheren Versionen nicht unterstützt. Die Zeichenfolgentypen F, F%, G und G% werden für Argumente verwendet, die direkt geändert werden. Wenn die Argumente XLOPER oder XLOPER12 als die Typen P bzw. Q registriert werden, konvertiert Excel bei der Vorbereitung Bezüge auf eine Zelle in einfache Werte und Bezüge auf mehrere Zellen in Arrays.
Die Typen P und Q gibt es in Ihrer Funktion immer als einen der folgenden Typen: xltypeNum, xltypeStr, xltypeBool, xltypeErr, xltypeMulti, xltypeMissing oder xltypeNil, aber nicht als xltypeRef oder xltypeSRef weil diese Typen immer dereferenziert werden.
Typ O, bei dem es sich tatsächlich um drei Argumente im Stapel handelt, wurde zwecks Kompatibilität mit Fortran-DLLs eingeführt, bei denen Argumente nach Verweis übergeben werden. Er kann nicht für die Rückgabe eines Werts verwendet werden – außer indem das Argument als Rückgabewert zum direkten Ändern deklariert wird und die Ergebnisse in die referenzierten Werte eingefügt werden. Der Typ O% erweitert den Typ O in Excel 2007, sodass er auf Arrays zugreifen kann, deren Bereiche größer als das Office Excel 2003-Raster sind.