Gibt es eine Konstante für max-Wert für den integer-Typ?
Ich bin auf der Suche nach einer Konstanten wie MAXINT in c#, VBA-code. Fand ich Verweise nur in anderen Sprachen, und kann nicht finden, eine für VBA.
Wenn es keine solche Konstante, was ist die maximale Anzahl ein int in VBA halten kann?
Ich habe versucht 2147483647 bekam aber einen überlauf-Fehler.
- Eine ganze Zahl in VBA hat einen maximalen Wert von 32767 und mindestens -32768
- Und für eine
Long
es2^31 - 1 = 2147483647
. AFAIK, es gibt keine Konstanten für, die. - Es sollte angemerkt werden, dass, da wir nicht mit 16-bit-Umgebungen nicht mehr, es fast nie Sinn macht zu nutzen, Integer über Lange.
- Wenn ich Sie richtig verstehe, eine ganze Zahl in VBA in mein Win10 wird immer verbrauchen 4 Bissen?
- Nein. Integer = 2 bytes. Aber es sei denn, Sie erstellen gigantischen arrays, Speicher ist nicht wirklich ein Thema mehr. Überlaufen ist.
- Here eine Diskussion (von heute) zum Thema Visual C++, Polsterung Speicher usw. VBA wäre kein pad ein Integer auf 32bit?
- Tja, gute Frage. Ich nahm immer den 2 bytes für selbstverständlich. Ich schlage vor, Sie versuchen es aus, die große arrays und beobachten Sie die Speicher-Auslastung mit dem Process Explorer.
- Ok @Andre hier sind meine Ergebnisse: Vor der Ausführung von code, MS-Access-Prozess verbraucht 12.8~9 MB. Beim ausführen Dim intArr(100000) As Integer Prozess verbraucht 13.1 MB. Beim ausführen Dim lngArr(100000) So Lange Verarbeiten, verbraucht 13.3 MB. Die oben wurde getestet, 3 mal. Fazit: VBA funktioniert nicht-pad-Ganzzahlen in statische integer-arrays. Wie bei Kombinationen von ints und lngs, diese sind eigentlich arrays von Variatns oder Objekten (=refferences), und es ist schwer zu schließen...
Du musst angemeldet sein, um einen Kommentar abzugeben.
VBA nicht
MAXINT
konstant. Aber man kann ableiten, dass der Wert leicht:Oder definieren Sie es als
Public
ständige mit diesem in den Deklarationsbereich eines Standardmoduls:Dann
MAXINT
zur Verfügung stehen würde für den rest Ihres VBA-code in der Anwendung.Und für
Long Integer
, der maximale Wert ist ...