Home HomeXLimits - Hauptseite


Limitationen in Excel-VBA und -Objektmodell

Inhaltsübersicht

Allgemeines über Limitationen in Excel-VBA und -Objektmodell

Übersicht der Limitationen in Excel-VBA und -Objektmodell

Anmerkungen zu Excel-VBA-Limitationen


Allgemeines über Limitationen in Excel-VBA und Excel-Objektmodell

Auf dieser Seite werden 38 Limitationen in der Programmiersprache VBA von Microsoft Excel (auch Excel-VBA genannt) und im Objektmodell von Microsoft Excel vorgestellt. Limitationen, die in Microsoft Excel generell existieren und demzufolge auch für Excel-VBA gelten, werden hier nicht explizit erwähnt.

Hier finden Sie weitere Limitationen:

Weitere Informationen

Alle Limitationen in Microsoft Excel finden Sie hier:
Limitationen in Microsoft Excel

Alle Limitationen im VBA-Editor von Microsoft Excel finden Sie hier:
Limitationen im VBA-Editor (VBE)

Alle Limitationen in Projekten erhalten Sie hier:
Limitationen in VBA- und VB-Projekten

Die Limitationen in der Programmiersprache VBA/VB finden Sie hier:
Limitationen in VBA und VB

Die Spezial-Limitationen von Arrays und Matrizen werden hier vorgestellt:
Array-Limitationen

Bei einzelnen Spezifikationen ist ein spezieller Vermerk angebracht, beispielsweise "Keine Angabe" oder "Inoffiziell". Was dieser bedeutet, wird hier erklärt:

Weitere Informationen

Vermerke bei den Spezifikationen

Diese Seite ist auch als Acrobat PDF-Dokument erhältlich. Mehr dazu erfahren Sie hier:

Themenseiten als PDF-Dokumente

To Top

 


Übersicht der Limitationen in Excel-VBA und -Objektmodell

Tipp: Direktes Aufrufen einer Limitation
Sämtliche in der nachstehenden Tabelle aufgeführten Limitationen besitzen so genannte Textmarken und können daher direkt aufgerufen werden. Wenn Sie beispielsweise die Limitation "Maximale Anzahl Quellzellen, die bei 'AutoFill' markiert sein dürfen", welche die ID 16 besitzt, aufrufen möchten, müssen Sie lediglich im Adressfeld Ihres Browsers den Zusatz "#L16" an die URL der vorliegenden Seite http://www.xlam.ch/xlimits/excelvba.htm anhängen. Die vollständige Adresse lautet somit "http://www.xlam.ch/xlimits/excelvba.htm#L16".

 

Limitationen in Excel-VBA und im Excel-Objektmodell

Die nachfolgende Tabelle enthält alle derzeit bekannten Limitationen auf, die in Microsoft Excel-VBA und im Microsoft Excel-Objektmodell existieren.

ID Merkmal (Limitation) Spezifikation
1 Maximale Anzahl Elemente in einem Array Excel 97:    Durch den verfügbaren Speicher begrenzt
Excel 2000: Durch den verfügbaren Speicher begrenzt
Excel 2002: Durch den verfügbaren Speicher begrenzt
Excel 2003: Durch den verfügbaren Speicher begrenzt

Auszug aus einer Beschreibung von Microsoft:
"Die maximale Grösse eines Datenfeldes hängt von Ihrem Betriebssystem sowie von dem verfügbaren Speicher ab. Durch die Verwendung eines Datenfeldes, das den für Ihr System verfügbaren RAM-Speicher überschreitet, wird Ihre Anwendung langsamer, da die Daten von der Festplatte gelesen und auf diese geschrieben werden müssen."

Weitere Informationen siehe Anmerkung 1.

Informationen über die Spezifikation "Durch den verfügbaren Speicher begrenzt" finden Sie auf der Seite Excel-Arbeitsspeicher.

Weitere Informationen über Array-Limitationen finden Sie auf der Seite Limitationen von Arrays, Matrizen und Matrixformeln.

2 Maximale Anzahl Array-Elemente, die mit der "Transpose"-Methode von einer benutzerdefinierten Tabellenfunktion zurückgegeben werden können Excel 95:    5'461 Elemente
Excel 97:    5'461 Elemente
Excel 2000: 5'461 Elemente

Excel 2002: 5'461 Elemente
Excel 2003: 5'461 Elemente

Werden mehr als 5'461 Elemente mit Transpose zurückgegeben, erscheint in einzelnen von der Funktion benutzten Zellen der Fehler "#WERT!". Dieses Problem wurde für Microsoft Excel 2000 durch den Service Release Microsoft Office SR-1/SR-1a behoben, wobei nach Installation des Updates noch ein neuer Registry-Eintrag von Hand erfasst werden muss. Achtung: Nur der Fehler wurde korrigiert. Mit Transpose können nach wie vor maximal 5'461 Array-Elemente verarbeitet werden.

Weitere Informationen siehe Anmerkung 1.

Weitere Informationen über Array-Limitationen finden Sie auf der Seite Limitationen von Arrays, Matrizen und Matrixformeln.

3 Maximale Anzahl Array-Elemente, die mit der "Transpose"-Methode verarbeitet werden können, wenn es um eine gewöhnliche Funktion handelt Excel 95:    5'461 Elemente
Excel 97:    5'461 Elemente
Excel 2000: 5'461 Elemente

Excel 2002: 5'461 Elemente
Excel 2003: 5'461 Elemente

Wenn  mehr als 5'461 Elemente der Transpose-Methode übergeben werden, erscheint der Laufzeitfehler 13 "Typen unverträglich" (engl. "Type Mismatch").

Weitere Informationen siehe Anmerkung 1.

Weitere Informationen über Array-Limitationen finden Sie auf der Seite Limitationen von Arrays, Matrizen und Matrixformeln.

4 Maximale Anzahl Dimensionen eines Arrays 60 Dimensionen

Weitere Informationen über Array-Limitationen finden Sie auf der Seite Limitationen von Arrays, Matrizen und Matrixformeln.

5 Maximale Länge eines Textes, der in die Zwischenablage (Clipboard) übertragen werden kann Excel 97:    31'737 Zeichen
Excel 2000: 31'737 Zeichen
Excel 2002: 31'737 Zeichen

Excel 2003: 31'737 Zeichen

Diese Limitation gilt generell für Windows, da die Windows-Zwischenablage keine Texte mit einer Länge von mehr als 31'737 Zeichen aufnehmen kann.

Weitere Informationen siehe Artikel xllimit3 'Maximale Länge des Zellinhaltes'.

6 Maximale Länge des Textes in einem eingebetteten TextBox-Objekt Excel 97:    ca. 2'000 Zeichen (2 KB) (oder 10'240 Zeichen?)
Excel 2000: ca. 2'000 Zeichen (2 KB) (oder 10'240 Zeichen?)

Excel 2002: (Keine Angabe)
Excel 2003: (Keine Angabe)

Diese Limitation gilt für MSForms TextBox-Objekte. Die auf einem Visual Basic-Benutzerformular verwendete TextBox dagegen kann Texte von bis zu 64 KB Grösse enthalten (ca. 65'536 Zeichen).

Weitere Informationen siehe Limitationen der Textbox und des Textfeldes in Microsoft Excel.

7 Maximale Anzahl Zeichen, die bei einer eingebetteten TextBox mit der "Characters"-Methode angesprochen werden können Excel 97:    255 Zeichen
Excel 2000: 255 Zeichen
Excel 2002: 255 Zeichen
Excel 2003: 255 Zeichen

Wenn mehr als 255 Zeichen in eine TextBox eingetragen werden sollen, so funktioniert die Zuweisung mit "TextBox1.Characters.Text = "<Mehr als 255 Zeichen>" nicht. Man muss den einzutragenden Text in maximal 255 Zeichen lange Zeichenfolgen aufteilen.

Weitere Informationen siehe Anmerkung 3.

8 Maximale Anzahl Zeichen, die im TextFrame einer AutoForm mit der "Characters"-Methode angesprochen werden können Excel 97:    255 Zeichen
Excel 2000: 255 Zeichen
Excel 2002: 255 Zeichen
Excel 2003: 255 Zeichen

Weitere Informationen siehe Anmerkung 3.

9 Maximale Anzahl Zeichen, die über das "Characters"-Objekt einer Zelle mit der "Insert"- und "Delete"-Methode verarbeitet werden kann Excel 97:    (Keine Angabe)
Excel 2000: 255 Zeichen

Excel 2002: (Keine Angabe)
Excel 2003: (Keine Angabe)

Wenn ein Text mit mehr als 255 Zeichen mit der Insert- und Delete-Methode verarbeitet wird, erscheint der Laufzeitfehler 1004 "Insert/Delete method of Characters class failed".

Die Limitation ist bei allen Excelversionen ausser Excel 2000 mit "Keine Angabe" spezifiziert. Dies, weil diese Limitation gemäss einem Microsoft Knowledge Base-Artikel anscheinend nur für Excel 2000 gilt bzw. zu einem Laufzeitfehler führt.

Weitere Informationen siehe Anmerkung 3.

10 Maximale Anzahl Zeichen, die von der "Len"-Funktion von VBA für die "Text"-Eigenschaft einer Zelle zurückgegeben werden Excel 97:    1'024 Zeichen
Excel 2000: 1'024 Zeichen

Excel 2002: 1'024 Zeichen
Excel 2003: 1'024 Zeichen

Mit der Len-Funktion von VBA wird die Länge einer Zeichenfolge abgefragt, beispielsweise "MsgBox Len(strText)". Len kann auch auf einen Zelltext angewendet werden, d.h.beispielsweise "MsgBox Len(ActiveCell.Text)", wobei eine wichtige Einschränkung zu beachten ist: Auch wenn ein Zelltext mehr als 1'024 Zeichen enthält, gibt die Len-Funktion das Ergebnis 1'024 zurück. Um die korrekte Länge eines Zellinhaltes zu ermitteln, muss man die Value-Eigenschaft der Zelle verwenden. Die Value-Eigenschaft besitzt keine Limitation bezüglich Anzahl Zeichen. Die Anweisung "MsgBox Len(ActiveCell.Value)" beispielsweise gibt die korrekte Anzahl Zeichen zurück.

Siehe auch Limitation-ID 11.

11 Maximale Anzahl Zeichen, die von der "Len"-Funktion für die "Text"-Eigenschaft der "Characters"-Methode eines Objekt zurückgegeben werden Excel 97:    255 Zeichen
Excel 2000: 255 Zeichen

Excel 2002: 255 Zeichen
Excel 2003: 255 Zeichen

Die Len-Funktion liefert als Ergebnis die Zahl 255, auch wenn der Text mehr als 255 Zeichen lang ist. Die Abfrage "MsgBox Len(ActiveSheet.Shapes(1).TextFrame.Characters.Text)" zeigt als Resultat den Wert 255 bei einer beispielsweise 500 Zeichen enthaltenden TextBox. Der Grund für diese falsche Ergebnis liegt nicht bei der Len-Funktion sondern bei der Characters-Methode, die generell nur 255 Zeichen verarbeiten kann.

Siehe auch Limitation-ID 10.

12 Maximale Anzahl Zeichen, die mit "NoteText" einem Kommentar zugewiesen werden können Excel 97:    255 Zeichen
Excel 2000: 255 Zeichen

Excel 2002: 255 Zeichen
Excel 2003: 255 Zeichen

Mit der NoteText-Methode des Range-Objektes kann man einer Zelle einen neuen Kommentar hinzufügen oder einen vorhandenen Zellkommentar ändern. Wenn der bei NoteText angegebene Text mehr als 255 Zeichen lang ist, wird der Zellkommentar nicht angelegt bzw. geändert, wobei jedoch keine Fehlermeldung (kein Laufzeitfehler) auftritt.

Siehe auch Limitation-ID 13.

13 Maximale Anzahl Zeichen, die mit "Comment.Text" bei Zell-Kommentaren verarbeitet werden können Excel 97:    32'767 Zeichen
Excel 2000: 32'767 Zeichen

Excel 2002: 32'767 Zeichen (Inoffiziell)
Excel 2003: 32'767 Zeichen (Inoffiziell)

Siehe auch Limitation-ID 12.

14 Maximale Anzahl Zeichen, die mit "Comment" bei Szenario-Kommentaren verarbeitet werden können Excel 97:    255 Zeichen
Excel 2000: 255 Zeichen

Excel 2002: 255 Zeichen (Inoffiziell)
Excel 2003: 255 Zeichen (Inoffiziell)
15 Maximale Anzahl Zeichen, die mit "AutoFill" verwendet werden können Excel 97:    255 Zeichen
Excel 2000: 255 Zeichen

Excel 2002: 255 Zeichen
Excel 2003: 255 Zeichen

Siehe auch Limitation-ID 16.

16 Maximale Anzahl Quellzellen, die bei "AutoFill" markiert sein dürfen Excel 97:    32'760 Zellen
Excel 2000: 32'760 Zellen
Excel 2002: 32'760 Zellen

Excel 2003: 32'760 Zellen

Mit der AutoFill-Methode des Range-Objektes können die Zellen eines Zellbereiches auf Basis eines bestimmten Quellbereiches ausgefüllt werden. Der Quellbereich darf maximal 32'760 Zellen umfassen. Wenn mehr als 32'760 Zellen verwendet werden, erscheint der Laufzeitfehler 1004 "Die AutoFill-Methode des Range-Objektes ist fehlerhaft".

Siehe auch Limitation-ID 15.

17 Maximale Anzahl Zeilen/Datensätze, die mit dem DataGrid-Control angezeigt werden können 65'535 Zeilen/Datensätze
18 Maximale Anzahl Zeilen/Datensätze, die mit dem MSHFlexGrid-Control angezeigt werden können 65'535 Zeilen/Datensätze (oder 2'048?)

Hinweis:
Das MSHFlexGrid-Control gehört zum Lieferumfang der MOD 2000 (Microsoft Office Developer Edition 2000).

19 Maximale Länge eines SQL-Strings 16'379 Zeichen

Bei mehr als 16'379 Zeichen erscheint der Fehler "Syntax Error". Dieses Problem kann mit einem separaten Hotfix behoben werden, der in keinem Service Release/Pack enthalten ist.

20 Maximale Anzahl Zeichen, die mit VBA in einer Zelle ersetzt werden können Excel 97:    1'024 Zeichen
Excel 2000: 911 Zeichen
Excel 2002: 911 Zeichen

Excel 2003: (Keine Angabe)

Die Spezifikation für Excel 2000 und Excel 2002 ist meiner Meinung nach doch erstaunlich, da in Microsoft Excel 97 die Grenze erst bei 1'024 Zeichen liegt. In Excel 2000 erscheint bei mehr als 911 Zeichen die Fehlermeldung "Formel ist zu lang" und die gewünschten Zeichen werden nicht ersetzt. In Excel 2002 erscheint keine Fehlermeldung. Die Zeichen werden jedoch ebenfalls nicht ersetzt.

Hinweis:
Aufgrund von Hinweisen verschiedener Excel-Benutzer ist es wahrscheinlich, dass auch Microsoft Excel 2003 von diesem Problem betroffen ist.

Weitere Informationen siehe Artikel xllimit4 'Maximale Länge von Formeln'.

21 Maximale Anzahl Zeichen eines Feldes, das aus einer Textdatei importiert wurde Excel 97:    Unbegrenzt
Excel 2000: 911 Zeichen
Excel 2002: Unbegrenzt
Excel 2003: (Keine Angabe)

Besitzt ein Feld mehr als 911 Zeichen, so werden die restlichen Zeichen beim Import der Textdatei abgeschnitten. Dieses Problem wurde erst in Micorosoft Excel 2002 behoben. Für Microsoft Excel 2000 gibt es weder ein Service Pack noch einen Hotfix zum Beheben des Problems.

Hinweis:
Es ist anzunehmen, dass Microsoft Excel 2003 dieses Problem ebenfalls nicht mehr besitzt.

22 Maximale Länge eines Textes, der mit der "Justify"-Methode verarbeitet werden kann Excel 97:    255 Zeichen
Excel 2000: 255 Zeichen
Excel 2002: 255 Zeichen

Excel 2003: 255 Zeichen

Ein Zelltext länger als 255 Zeichen wird einfach abgeschnitten, ohne dass eine Fehlermeldung erscheint.

23 Maximale Anzahl von COM Interface Requests unter Windows 95 und Windows 98 Excel 97:    64 KB
Excel 2000: 64 KB
Excel 2002: 64 KB

Excel 2003: 64 KB

Das Überschreiten dieser Limitation führt zum 'Hängen' der Anwendung (d.h. sie gibt keine Rückmeldung mehr) oder zu einer Fehlermeldung wie "Nicht genügend Ressourcen" oder "Nicht genügend Speicher".

Anmerkung des Autors:
Ich persönlich konnte mir nie so richtig vorstellen, wie sich diese Limitation in der Praxis auswirkt, bis eines Tages ein von mir entwickeltes VB-Programm an genau diese 64 KB-Grenze überschritt. Die Folge war, dass sich das Programm nicht mehr wie erwartet verhielt. Es reagierte sehr träge, der mittels Automation gestartete Excel-Prozess liess sich trotz Quit-Methode nicht mehr beenden und das gesamte System wurde instabil. Nur der Neustart von Windows konnte diese Situation 'lösen'.

Q216400 PRB: Cross-Process COM Automation Hangs Client App on Win95/Win98

24 Maximale Anzahl inneinander verschachtelter Fliesskomma-Ausdrücke 8 verschachtelte Ausdrücke

Diese Beschränkung gilt generell in allen 32-Bit Windows-Betriebssystemen. Bei Überschreiten dieser Limitation in einem VBA-Programm wird der Laufzeitfehler 16 "Ausdruck zu komplex" angezeigt.

25 Maximale Länge eines mit "MsgBox" angezeigten Meldungstextes ca. 1'024 Zeichen

Je nach Breite der im Mitteilungstext verwendeten Zeichen können auch weniger als 1'024 Zeichen dargestellt werden. Werden viele schmale Zeichen, z.B. die Buchstaben 'i' oder 'l' benutzt, wird bedingt durch die eingesetzte Proportionalschrift mehr Text als bei Benutzung vieler breiter Zeichen, z.B. bei 'w' oder 'm', angezeigt.

26 Maximale Anzahl Zeichen, die in das Dialog-Eingabefeld der "InputBox"-Funktion eingegeben werden können Excel 97:    255 Zeichen
Excel 2000: 255 Zeichen
Excel 2002: 255 Zeichen
Excel 2003: 255 Zeichen
27 Anzahl in einer Programmschleife erstellbarer Kopien eines Arbeitsblattes Excel 97:    Ungefähr 24 Arbeitsblattkopien
Excel 2000: Durch den verfügbaren Speicher begrenzt
Excel 2002: Durch den verfügbaren Speicher begrenzt

Excel 2003: Durch den verfügbaren Speicher begrenzt

Es ist nicht möglich, eine genauere Angabe als "ungefähr 24 Arbeitsblätter" zu machen, da die tatsächliche Anzahl von der Länge des Namens des zu kopierten Blattes abhängig ist. Je länger der Blattname ist, desto weniger Kopien können in einer Programmschleife erstellt werden.

Weitere Informationen siehe Anmerkung 2.

Informationen über die Spezifikation "Durch den verfügbaren Speicher begrenzt" finden Sie auf der Seite Excel-Arbeitsspeicher.

28 Anzahl Felder, die mit der "CopyFromRecordset"-Methode eingelesen werden können Excel 97:    ca. 4'096 Felder (mit DAO)
Excel 2000: Unlimitiert (mit ADO), ca. 4'096 Felder (mit DAO)
Excel 2002: Unlimitiert (mit ADO), ca. 4'096 Felder (mit DAO)

Excel 2003: Unlimitiert (mit ADO), ca. 4'096 Felder (mit DAO)

In Microsoft Excel 97 kann die "CopyFromRecordset"-Methode des "Range"-Objektes mit einer DAO-Datenquelle verwendet werden. In diesem Fall existiert die Limitation, dass maximal ca. 4'096 Felder eingelesen werden können. Ab Microsoft Excel 2000 können neben DAO- auch ADO-Datenquellen verwendet werden. Bei ADO-Datenquellen existiert die Limitation meines Wissens nicht.

29 Maximale Länge des in "Application.UserName" gespeicherten Excel-Benutzernamens Excel 97:    54 Zeichen
Excel 2000: 52 Zeichen
Excel 2002: (Keine Angabe)

Excel 2003: (Keine Angabe)

Die maximale Länge des Benutzernamens ist in Microsoft Excel 2000 tatsächlich genau zwei Zeichen kürzer als in Excel 97 (Anmerkung des Autors: Persönlich getestet in den beiden erwähnten Excelversionen). Der Grund für diesen Unterschied ist nicht bekannt.

Wenn Sie "Application.UserName" eine Zeichenfolge von mehr als 54 Zeichen (Excel 97) bzw. 52 Zeichen (Excel 2000) Länge zuweisen, wird die Zeichenfolge zwar entgegengenommen, aber die überzähligen Zeichen ohne Fehlermeldung abgeschnitten.

Der Benutzername, genauer gesagt die UserName-Eigenschaft, kann nicht leer sein. Beim Zuweisen einer leeren Zeichenfolge ("") wird automatisch der Default-Benutzername verwendet. Sowohl UserName als auch das Eingabefeld im Optionen-Dialog enthalten daraufhin den Default-Benutzernamen. In der Windows-Registry jedoch ist kein Name eingetragen. Dies hat zur Folge, dass beim nächsten Starten von Microsoft Excel ein Dialogfeld mit dem Titel "Benutzername" erscheint, in welchem Sie Name und Initialen eingeben müssen.

Der Benutzername wird im Optionen-Dialogfenster auf der Registerseite "Allgemein" festgelegt. Bei jedem Öffnen einer Arbeitsmappe wird dieser Name in die Exceldatei der Mappe (xls-Datei) geschrieben. Und zwar auch dann, wenn man die Mappe nicht speichert. Der Benutzername ist in der Datei im BIFF-Record mit der Bezeichnung WRITEACCESS (ID 5C hex/92 dec) abgelegt. Dieser Record könnte einen Benutzernamen mit bis zu 109 Zeichen Länge aufnehmen. Es werden jedoch nur 54 bzw. 52 Zeichen beansprucht. Wahrscheinlich sind die restlichen Stellen als Reserve für die Unicode-Darstellung gedacht. Ein Unicode-Zeichen benötigt generell 2 Bytes. Bei 54 Zeichen somit 108 Bytes.

30 Maximale Länge des Suchkriterium-Namens bei der "Delete"-Methode des "FileFind"-Objektes (Excel für Macintosh) Excel 98 (Mac):    31 Zeichen
Excel 2001 (Mac): 31 Zeichen
Excel X (Mac):      31 Zeichen (Inoffiziell)

Excel 2004 (Mac): 31 Zeichen (Inoffiziell)
31 Anzahl Zellen, die geändert werden können, ohne dass der Mauszeiger flackert Excel 97:    63 Zellen
Excel 2000: 63 Zellen
Excel 2002: 63 Zellen

Excel 2003: 63 Zellen

Diese eher ungewöhnliche Spezifikation bedeutet folgendes:
Wenn mit VBA oder mittels Automation in Zellen Daten eingetragen werden, so ändert Microsoft Excel automatisch den Mauszeiger zum Sanduhr-Symbol, sobald 64 oder mehr Zellen angesprochen werden. Wenn sehr viele Zellen geändert werden, wird daher das Mauszeiger-Symbol mehrmals umgeschaltet, was zu einem "Flackern-Effekt" führt. Dieses Flackern kann vermieden werden, indem die Daten zuerst in Datenfelder (Arrays) mit einer Grösse von maximal 63 Elementen gefüllt und anschliessend in die Zellen geschrieben werden.

32 Maximale Länge eines Textes, der mit der "Find"-Methode gesucht werden kann Excel 97:    255 Zeichen
Excel 2000: 255 Zeichen
Excel 2002: 255 Zeichen

Excel 2003: 255 Zeichen

Wenn man für das What-Argument der Find-Methode einen mehr als 255 Zeichen langen Text angibt, erscheint der Laufzeitfehler 1004 "Die Find-Eigenschaft des Range-Objektes kann nicht zugeordnet werden".

33 Erlaubter Spaltenindex bei der "Columns"-Eigenschaft Excel 97:    -254 bis 256
Excel 2000: -254 bis 256
Excel 2002: -254 bis 256

Excel 2003: -254 bis 256

Ein Tabellenblatt enthält grundsätzlich 256 Spalten. Jede Spalte besitzt einen Index (1 bis 256). Zum Ansprechen einer Spalte kann die "Columns"-Eigenschaft verwendet werden. Die Anweisung "MsgBox Columns(1).Width" zeigt die Breite der Spalte 1 (=Spalte A), und "MsgBox Columns(256).Width" zeigt die Breite der Spalte 256 (=Spalte IV). Columns akzeptiert jedoch nicht nur Zahlen von 1 bis 256, sondern auch die Zahl 0 und sogar negative Zahlen von -1 bis -254.

Weitere Informationen siehe Anmerkung 4.

34 Maximale Länge des mit der "Evaluate"-Methode auszuwertenden Excel-Namens Excel 97:    255 Zeichen
Excel 2000: 255 Zeichen
Excel 2002: 255 Zeichen

Excel 2003: 255 Zeichen

Mit der "Evaluate"-Methode kann man einen beliebigen Microsoft Excel-Namen auswerten, der eine A1-Bezugsart, einen bzw. mehrere Bereiche, einen definierten Namen oder einen externen Bezug darstellt. Zurückgegeben wird ein Objekt oder ein Wert. Der Evalutate übergebene Name kann bis zu 255 Zeichen lang sein.

35 Maximale Länge einer Matrixformel, die mit der "FormulaArray"-Eigenschaft angesprochen werden kann Excel 97:    255 Zeichen
Excel 2000: 255 Zeichen
Excel 2002: 255 Zeichen

Excel 2003: 255 Zeichen

Zellformeln dürfen in Microsoft Excel gewöhnlich bis zu 1'024 Zeichen lang sein. Das gilt auch für Matrixformeln, die über die Benutzeroberfläche in eine Zelle eingegeben werden. Matrixformeln, die mit VBA einer Zelle zugewiesen werden, können hingegen wegen eines Bugs maximal 255 Zeichen lang sein. Auch das Abfragen einer Matrixformel mit VBA funktioniert nicht korrekt, wenn die Formel mehr als 255 Zeichen lang ist.

Weitere Informationen siehe Artikel xllimit4 'Maximale Länge von Formeln'.

36 Maximale Länge des Anwendungsfenstertitels von Excel ("Application.Caption") Excel 97:    256 bzw. 200 Zeichen
Excel 2000: 256 bzw. 200 Zeichen
Excel 2002: 256 bzw. 200 Zeichen

Excel 2003: 256 bzw. 200 Zeichen

Zuweisen mit Application.Caption: 200 Zeichen
Maximale Länge des Inhaltes von Application.Caption: 256 Zeichen

Wenn man eine Zeichenfolge länger als 200 Zeichen zuweist, werden die überzähligen Zeichen automatisch abgeschnitten. Es tritt kein Laufzeitfehler auf.

Ist
- die zugewiesene Zeichenfolge
- plus der Dateiname
- plus eine allfällige Fensternummer
- plus ein allfälliger "Gruppe"-Hinweis
- plus ein allfälliger "Schreibgeschützt"-Hinweis
- plus ein allfälliger "Freigegeben"-Hinweis
- plus ein allfälliger Anwendungsstatushinweis ("Abgesicherter Modus")
länger als 256 Zeichen, dann werden die überzähligen Zeichen unterdrückt. So kann es beispielsweise sein, dass die Information "[Schreibgeschützt]" abgeschnitten wird. Wenn man dann der Caption-Eigenschaft eine bedeutend kürzere Zeichenfolge zuweist, wird wieder die vollständige Information angezeigt. Dies, weil Excel intern nur maximal 200 der zugewiesenen Zeichen speichert. Die restlichen maximal 56 Zeichen werden dynamisch zur Laufzeit ermittelt.

Im Windows Task-Manager werden nur höchstens 255 Zeichen der maximal 256 Zeichen angezeigt.

37 Maximale Länge des Fenstertitels bei der "GetOpenFilename"- und "GetSaveAsFilename"-Methode Excel 97:    255 Zeichen
Excel 2000: 255 Zeichen
Excel 2002: 255 Zeichen

Excel 2003: 255 Zeichen
38 Maximale Länge der Schaltflächenbeschriftung bei der "GetOpenFilename"- und "GetSaveAsFilename"-Methode (nur Excel für Macintosh) Excel 98 (Mac):    255 Zeichen
Excel 2001 (Mac): 255 Zeichen
Excel X (Mac):      255 Zeichen

Excel 2004 (Mac): 255 Zeichen

To Top


Anmerkungen zu Excel-VBA-Limitationen

Nachfolgend finden Sie Zusatzinformationen zu verschiedenen Limitationen in Excel-VBA.

To Top


[1]  Maximale Anzahl Array-Elemente bei der Transpose-Methode

Wieso liegt die maximale Anzahl Elemente bei genau 5'461? Meistens besitzen doch Limitationen eine in der Computerwelt häufig vorkommende Zahl wie zum Beispiel 32, 255, 1'024, 32'767 oder 65'536! Die Frage, weshalb die maximale Anzahl bei exakt 5'461 Elementen liegt, hat mich in der Tat sehr lange beschäftigt.

Alle 16-bit Excelversionen (z.B. Excel 4.0):

- Array-Definition wird in einem 64 KB Speichersegment abgelegt (64 KB = 65'536 Bytes)
- Wert ist in 20 Bits gespeichert
- 3'276 Elemente (65'536 Byte / 20 Bits = 3'276.80 = 3'276)

Ältere 32-bit Excelversionen (z.B. Excel 7.0):

- Array-Definition wird in einem 64 KB Speichersegment abgelegt (64 KB = 65'536 Bytes)
- Wert ist in 24 Bits gespeichert
- 2'730 Elemente (65'536 Byte / 24 Bits = 2'730.66 = 2'730)

Neuere 32-bit Excelversionen (ab Excel 95):

- Array-Definition wird in zwei 64 KB Speichersegmenten abgelegt (64 KB = 65'536 Bytes)
- Wert ist in 24 Bits gespeichert
- 5'461 Elemente (2 * 65'536 Byte / 24 Bits = 5'461.33 = 5'461)

Die Transpose-Methode wird immer dann benötigt, wenn ein sogenanntes Column-Array zurückgegeben werden soll, d.h. ein Datenfeld, das genau 1 Spalte und >1 Zeilen enthält. Es handelt sich somit um ein eindimensionales Array, dessen Elemente auf die Zellen einer einzelnen Spalte transponiert werden müssen.

Die Transponierung ist notwendig, da die Zellen einer Tabelle grundsätzlich von links nach rechts und dann von oben nach unten indexiert sind; und nicht von oben nach unten und dann von links nach rechts. Die Indizes sehen somit folgendermassen aus:

Zeile 1: Zelle A1=Index 1, Zelle B1=Index 2, Zelle C1=Index 3, ... , Zelle IV1=Index 256
Zeile 2: Zelle A2=Index 257, Zelle B2=Index 258, ... , Zelle IV2=Index 512
Zeile 3: Zelle A3=Index 513, ... , Zelle IV3=Index 768
Zeile 4: Zelle A4=Index 769, ... , Zelle IV4=Index 1024
usw.

Ein Column-Array für die Spalte A mit 4 Elementen wird mittels Transpose auf die vier untereinander stehenden Zellen 1, 257, 513 und 769 verteilt.

 

TODO: Umgehungsmöglichkeit mit selbstentwickelter VBA-Funktion

Function TransposeDim(v As Variant) As Variant
   Dim X As Long, Y As Long, Xupper As Long, Yupper As Long
   Dim tempArray As Variant

   Xupper = UBound(v, 2)
   Yupper = UBound(v, 1)

   ReDim tempArray(Xupper, Yupper)
   For X = 0 To Xupper
      For Y = 0 To Yupper
         tempArray(X, Y) = v(Y, X)
      Next Y
   Next X

   TransposeDim = tempArray
End Function

To Top


[2]  Anzahl erstellbare Arbeitsblatt-Kopien

Dieser Artikel folgt in Kürze...

 

Siehe auch Artikel "Maximale Länge eines Arbeitsblattnamens" (xllimit24).

To Top


[3]  Maximale Anzahl mit der Characters-Methode verarbeitbare Zeichen

Die Characters-Methode besitzt allgemein betrachtet eine Limitation von maximal 255 Zeichen. Diese Begrenzung hat zur Folge, dass man der Text-Eigenschaft Zeichenfolgen von höchstens 255 Zeichen Länge zuweisen kann. Man kann diese Einschränkung umgehen, indem man den zuzuweisenden Text in Blöcke à maximal 255 Zeichen aufteilt.

Sub FillTextFrame()
  Dim objTextBox As Shape
  Dim strText As String
  Dim intChars As Integer
  strText = String$(888, "Z")
  Set objTextBox = ActiveSheet.Shapes.AddTextbox(1, 10, 10, 200, 200)
  For intChars = 1 To Len(strText) Step 250
    objTextBox.TextFrame.Characters(intChars, 250).Text = Mid$(strText, intChars, 250)
  Next intChars
  Set objTextBox = Nothing
End Sub

To Top


[4]  Erlaubter Spaltenindex bei der Columns-Eigenschaft

Bei der Columns-Eigenschaft können nicht nur die Zahlen von 1 und 256 sondern auch Zahlen von 0 bis -254 angegeben werden.

Beispiele:

Abfrage von Ergebnis
Columns(1).Width Breite der Spalte 1 (=A)
Columns(256).Width Breite der Spalte 256 (=IV)
Columns(0).Width Laufzeitfehler 1004
Columns(257).Width Laufzeitfehler 1004
Columns(1).Columns(1).Width Breite der Spalte 1 (=A)
Columns(1).Columns(256).Width Breite der Spalte 256 (=IV)
Columns(256).Columns(1).Width Breite der Spalte 256 (=IV)
Columns(256).Columns(0).Width Breite der Spalte 255 (=IU)
Columns(0).Columns(256).Width Laufzeitfehler 1004
Columns(256).Columns(-1).Width Breite der Spalte 254 (=IT)
Columns(256).Columns(-254).Width Breite der Spalte 1 (=A)
Columns(-254).Columns(256).Width Laufzeitfehler 1004
Columns(2).Columns(0).Width Breite der Spalte 1 (=A)

To Top


Haben Sie Fragen, Anregungen oder einen Fehler entdeckt?
Kontakt zum Autor

Zuletzt aktualisiert am 4.05.2006 / 17:00 Uhr
Zuletzt kontrolliert am 22.12.2008 / 07:00 Uhr
© 2002-2009 by Philipp von Wartburg, Schweiz
Alle Rechte vorbehalten