Datentypen: Unterschied zwischen den Versionen

Aus VBA-wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „== Dynamische Datentypen == Dynamische Datentypen können nicht nur einen Wert aufnehmen, sondern eine Liste von Werten (Collections), oder sogar eine beliebi…“)
 
Keine Bearbeitungszusammenfassung
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Category:vba-wiki]]
== Natürliche Datentypen ==
Als natürliche Datentypen bezeichnen wir solche Datentypen, die einen eindeutigen Wert entgegennehmen, im Gegensatz zu [[#Dynamische Datentypen|dynamischen Datentypen]], welche mehrere Werte aufnehmen können, oder [[#Objekte|(Klassen-)Objekten]], die nicht nur Werte, sondern auch Prozeduren enthalten können.
{| class="wikitable"
! style="text-align:left;" | Familie
! style="text-align:left;" | Unterfamilie
! style="text-align:left;" | Datentyp
! style="text-align:left;" | Beschreibung
! style="text-align:left;" | Präfix
! style="text-align:left;" | Bereich
! style="text-align:left;" | Initialwert
! style="text-align:left;" | Speicherbedarf
! style="text-align:left;" | Anmerkungen
|- style="vertical-align:top;"
| Zeichen
| [[Zeichenketten]]
| String
| Zeichenkette
| str
| Variabel bis 2^31 (2 Mia) Zeichen
| "" (Leerstring)
| Wie benötigt
| Ein Datentyp für einzelne Zeichen existiert in VB(A) nicht
|- style="vertical-align:top;"
| Numerische Werte
| [[Ganzzahlen]]
| Byte
| Binärdaten
| bte
| 0 – 255
| 0
| 1 Byte
|
|- style="vertical-align:top;"
|
|
| Integer
| Einfache Ganzzahl
| int
| -32.768 bis 32.767 (2^16)
| 0
| 2 Byte
|
|- style="vertical-align:top;"
|
|
| Long
| Lange Ganzzahl
| lng
| -2.147.483.648 bis 2.147.483.647 (2^32)
| 0
| 4 Byte
| Bevorzugter Datentyp für Ganzzahlen
|- style="vertical-align:top;"
|
| [[Gleitkommazahlen]]
| Single
| Gleitkommazahl einfacher Genauigkeit
| sng
| Insgesamt 8 Stellen inkl. Komma<br>123,4568<br>-123456,8
| 0.0
| 4 Byte
| Tatsächlich abbildbarer Bereich durch Exponente deutlich größer, aber Genauigkeit auf insgesamt 8 Stellen beschränkt: 1,234568E+38
|- style="vertical-align:top;"
|
|
| Double
| Gleitkommazahl doppelter Genauigkeit
| dbl
| Insgesamt 16 Stellen inkl. Komma<br>123,456789012346<br>-123456789012,346
| 0.0
| 8 Byte
| Siehe Single, auf 16 Stellen beschränkt
|- style="vertical-align:top;"
|
|
| Currency
| Währung
| cur
| Maximal 15 Stellen vor, immer 4 Stellen nach Komma
| 0.0
| 8 Byte
| Muss nicht zwingend für Währung eingesetzt werden
|- style="vertical-align:top;"
| Zeit
| [[Datum und Uhrzeit]]
| Date
| Datum und Uhrzeit
| dte
| 01. Januar 100 bis zum 31. Dezember 9999
| 00:00:00
| 8 Byte
| Wird als Double gespeichert. Kann nur Datum, nur Uhrzeit oder Datum und Uhrzeit enthalten. Vorkommastellen repräsentieren die Anzahl Tage vor bzw. nach dem 30. Dezember 1899, Nachkommastellen die Uhrzeit. Mitternacht entspricht dem Wert 0, und 12:00 Mittag entspricht dem Nachkommawert 0,5.
|- style="vertical-align:top;"
| Boolesche
| [[Boolesche Werte]]
| Boolean
| Boolescher Wert
| bln
| True, False
| False (0)
| 2 Byte
| Setzen: 0 ist False, <> 0 True<br>Abfragen: False 0, True -1
|- style="vertical-align:top;"
| Unbestimmt
| [[Variant|Unbestimmt]]
| Variant
| Kann alle Datenypen aufnehmen
| var
| Abhängig von Originaldatentyp
| Abhängig von Originaldatentyp
| Abhängig von Originaldatentyp
| Sollte nur wenn absolut nötig verwendet werden.
|- style="vertical-align:top;"
|
| [[Type|Benutzerdefiniert]]
| Type
| Kann ein oder mehrere Elemente enthalten
| tpe
| Abhängig von Originaldatentyp(en)
| Abhängig von Originaldatentyp(en)
| Abhängig von Originaldatentyp(en)
| Kann als Gruppe von Werten verstanden werden (Typ Person enthält Name, Vorname, Geburtsdatum, ...)
|}
== Dynamische Datentypen ==
== Dynamische Datentypen ==


Dynamische Datentypen können nicht nur einen Wert aufnehmen, sondern eine Liste von Werten (Collections), oder sogar eine beliebig dimensionierte Sammlung von zusammenhängenden Werten (Arrays).
Dynamische Datentypen können nicht nur einen Wert aufnehmen, sondern eine Liste von Werten (Collections), oder sogar eine beliebig dimensionierte Sammlung von zusammenhängenden Werten (Arrays).
{| class="wikitable"
! style="text-align:left;" | Familie
! style="text-align:left;" | Unterfamilie
! style="text-align:left;" | Datentyp
! style="text-align:left;" | Beschreibung
! style="text-align:left;" | Präfix
! style="text-align:left;" | Bereich
! style="text-align:left;" | Initialwert
! style="text-align:left;" | Speicherbedarf
! style="text-align:left;" | Anmerkungen
|- style="vertical-align:top;"
| Dynamische Datentypen
| [[Collection|Eindimensionale Listen]]
| Collection
| Eindimensionale Liste
| col
|
| Nothing
| Wie benötigt
| Kann eine Liste von Werten mit beliebigen Datentypen entgegennehmen. Neue Elemente können beliebig in der vorhandenen Liste eingeschoben werden.
|- style="vertical-align:top;"
|
| [[Array|Datenfelder]]
| Array
| Liste / Tabelle
| Abhängig von Datentyp
|
| Keiner bzw. Abhängig von Datentyp
| Wie benötigt
| Kann eine ein- oder mehrdimensionale Liste von Werten mit einem vorgegebenen Datentypen entgegennehmen. Alle Elemente haben einen festen Platz.
|}


=== Collection ===
== Objekte ==
 
Dim colList As Collection Set colList
 
= New Collection colList.Add "Item 1" colList.Add "Item 2" Dim lngIndex As Long Dim colList As Collection Set colList =


New Collection colList.Add "Item 1" colList.Add "Item 2" For lngIndex = 1 To colList.Count Debug.Print colList.Item(lngIndex) Next lngIndex
{| class="wikitable"
! style="text-align:left;" | Familie
! style="text-align:left;" | Unterfamilie
! style="text-align:left;" | Datentyp
! style="text-align:left;" | Beschreibung
! style="text-align:left;" | Präfix
! style="text-align:left;" | Bereich
! style="text-align:left;" | Initialwert
! style="text-align:left;" | Speicherbedarf
! style="text-align:left;" | Anmerkungen
|- style="vertical-align:top;"
| Objekte
| [[Generelle Objekte]]
| Object
| Objektreferenz
| obj
| 32-Bit-Adressen
| Nothing
| 4 Byte
| Enthält einen Verweis auf das Original-Objekt, welches ein beliebiges Anwendungs- oder Klassenobjekt sein kann
|- style="vertical-align:top;"
|
| [[Anwendungsobjekte]]
| Object
| Klassenreferenz auf Anwendungsobjekt
|
| 32-Bit-Adressen
| Nothing
| 4 Byte
| Nimmt eine Instanz eines Anwendungsobjektes entgegen
|- style="vertical-align:top;"
|
| [[Klassenobjekte]]
| Object
| Klassenreferenz
|
| 32-Bit-Adressen
| Nothing
| 4 Byte
| Nimmt eine Instanz einer Klasse aus dem gleichen VBA-Projekt entgegen
|}

Aktuelle Version vom 28. Januar 2023, 00:34 Uhr

Natürliche Datentypen

Als natürliche Datentypen bezeichnen wir solche Datentypen, die einen eindeutigen Wert entgegennehmen, im Gegensatz zu dynamischen Datentypen, welche mehrere Werte aufnehmen können, oder (Klassen-)Objekten, die nicht nur Werte, sondern auch Prozeduren enthalten können.

Familie Unterfamilie Datentyp Beschreibung Präfix Bereich Initialwert Speicherbedarf Anmerkungen
Zeichen Zeichenketten String Zeichenkette str Variabel bis 2^31 (2 Mia) Zeichen "" (Leerstring) Wie benötigt Ein Datentyp für einzelne Zeichen existiert in VB(A) nicht
Numerische Werte Ganzzahlen Byte Binärdaten bte 0 – 255 0 1 Byte
Integer Einfache Ganzzahl int -32.768 bis 32.767 (2^16) 0 2 Byte
Long Lange Ganzzahl lng -2.147.483.648 bis 2.147.483.647 (2^32) 0 4 Byte Bevorzugter Datentyp für Ganzzahlen
Gleitkommazahlen Single Gleitkommazahl einfacher Genauigkeit sng Insgesamt 8 Stellen inkl. Komma
123,4568
-123456,8
0.0 4 Byte Tatsächlich abbildbarer Bereich durch Exponente deutlich größer, aber Genauigkeit auf insgesamt 8 Stellen beschränkt: 1,234568E+38
Double Gleitkommazahl doppelter Genauigkeit dbl Insgesamt 16 Stellen inkl. Komma
123,456789012346
-123456789012,346
0.0 8 Byte Siehe Single, auf 16 Stellen beschränkt
Currency Währung cur Maximal 15 Stellen vor, immer 4 Stellen nach Komma 0.0 8 Byte Muss nicht zwingend für Währung eingesetzt werden
Zeit Datum und Uhrzeit Date Datum und Uhrzeit dte 01. Januar 100 bis zum 31. Dezember 9999 00:00:00 8 Byte Wird als Double gespeichert. Kann nur Datum, nur Uhrzeit oder Datum und Uhrzeit enthalten. Vorkommastellen repräsentieren die Anzahl Tage vor bzw. nach dem 30. Dezember 1899, Nachkommastellen die Uhrzeit. Mitternacht entspricht dem Wert 0, und 12:00 Mittag entspricht dem Nachkommawert 0,5.
Boolesche Boolesche Werte Boolean Boolescher Wert bln True, False False (0) 2 Byte Setzen: 0 ist False, <> 0 True
Abfragen: False 0, True -1
Unbestimmt Unbestimmt Variant Kann alle Datenypen aufnehmen var Abhängig von Originaldatentyp Abhängig von Originaldatentyp Abhängig von Originaldatentyp Sollte nur wenn absolut nötig verwendet werden.
Benutzerdefiniert Type Kann ein oder mehrere Elemente enthalten tpe Abhängig von Originaldatentyp(en) Abhängig von Originaldatentyp(en) Abhängig von Originaldatentyp(en) Kann als Gruppe von Werten verstanden werden (Typ Person enthält Name, Vorname, Geburtsdatum, ...)

Dynamische Datentypen

Dynamische Datentypen können nicht nur einen Wert aufnehmen, sondern eine Liste von Werten (Collections), oder sogar eine beliebig dimensionierte Sammlung von zusammenhängenden Werten (Arrays).

Familie Unterfamilie Datentyp Beschreibung Präfix Bereich Initialwert Speicherbedarf Anmerkungen
Dynamische Datentypen Eindimensionale Listen Collection Eindimensionale Liste col Nothing Wie benötigt Kann eine Liste von Werten mit beliebigen Datentypen entgegennehmen. Neue Elemente können beliebig in der vorhandenen Liste eingeschoben werden.
Datenfelder Array Liste / Tabelle Abhängig von Datentyp Keiner bzw. Abhängig von Datentyp Wie benötigt Kann eine ein- oder mehrdimensionale Liste von Werten mit einem vorgegebenen Datentypen entgegennehmen. Alle Elemente haben einen festen Platz.

Objekte

Familie Unterfamilie Datentyp Beschreibung Präfix Bereich Initialwert Speicherbedarf Anmerkungen
Objekte Generelle Objekte Object Objektreferenz obj 32-Bit-Adressen Nothing 4 Byte Enthält einen Verweis auf das Original-Objekt, welches ein beliebiges Anwendungs- oder Klassenobjekt sein kann
Anwendungsobjekte Object Klassenreferenz auf Anwendungsobjekt 32-Bit-Adressen Nothing 4 Byte Nimmt eine Instanz eines Anwendungsobjektes entgegen
Klassenobjekte Object Klassenreferenz 32-Bit-Adressen Nothing 4 Byte Nimmt eine Instanz einer Klasse aus dem gleichen VBA-Projekt entgegen