ARRAY als Konstante in VBA nutzen
Schritt-für-Schritt-Anleitung
Um ein Array als Konstante in VBA zu verwenden, ist es wichtig zu verstehen, dass VBA keine Arrays als Konstanten unterstützt. Stattdessen kannst du ein Array als globale Variable definieren und es in verschiedenen Prozeduren verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, wie du ein vba array definieren kannst:
-
Öffne dein Excel VBA-Editor (ALT + F11).
-
Erstelle ein neues Modul (Rechtsklick auf "VBAProject" > Einfügen > Modul).
-
Deklariere das Array als globale Variable. Zum Beispiel:
Public VName As Variant
-
Initialisiere das Array im Workbook_Open-Ereignis oder in einer eigenen Funktion:
Private Sub Workbook_Open()
VName = Array("Frank", "Wiebke", "Andrea")
End Sub
-
Du kannst nun das Array in einer beliebigen Subroutine verwenden:
Sub Irgendwas()
Dim i As Integer
Dim s As String
For i = LBound(VName) To UBound(VName)
s = s & VName(i) & vbCr
Next i
MsgBox s
End Sub
Häufige Fehler und Lösungen
-
Fehlermeldung: "Konstanter Ausdruck erforderlich"
Diese Fehlermeldung tritt auf, wenn du versuchst, ein Array als Public Const zu deklarieren. Arrays können keine Konstanten sein. Verwende stattdessen Public für globale Variablen.
-
Problem mit der Initialisierung
Stelle sicher, dass du das Array vor der ersten Verwendung initialisierst. Dies kann im Workbook_Open-Ereignis geschehen.
Alternative Methoden
Wenn du das Array nicht als globale Variable definieren möchtest, kannst du auch eine Funktion verwenden, um auf die Werte zuzugreifen. Hier ist ein Beispiel:
Public Function Vorname(index As Integer) As String
Dim names As Variant
names = Array("Anton", "Berta", "Charlie")
On Error Resume Next
Vorname = names(index)
On Error GoTo 0
End Function
Diese Funktion ermöglicht es dir, den gewünschten Namen über den Index abzurufen, ohne dass das Array direkt in jedem Modul verfügbar sein muss.
Praktische Beispiele
Hier sind zwei einfache Beispiele, wie du ein vba array definieren und verwenden kannst:
-
Beispiel mit Workbook_Open:
'In diesem Beispiel wird das Array beim Öffnen der Arbeitsmappe initialisiert.
Private Sub Workbook_Open()
VName = Array("Frank", "Wiebke", "Andrea")
End Sub
-
Funktion zur Rückgabe von Werten:
Public Function GetName(index As Integer) As String
Dim names As Variant
names = Array("Frank", "Wiebke", "Andrea")
If index >= LBound(names) And index <= UBound(names) Then
GetName = names(index)
Else
GetName = "Index außerhalb des Bereichs"
End If
End Function
Tipps für Profis
- Verwende
Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Tippfehler zu vermeiden.
- Nutze
On Error Resume Next vorsichtig, um Fehler zu behandeln, wenn du mit Arrays arbeitest. Stelle sicher, dass du nach der Fehlerbehandlung wieder zurück zu On Error GoTo 0 wechselst.
- Bei der Verwendung von
Public Variablen ist es ratsam, diese in einem allgemeinen Modul zu deklarieren, um die Sichtbarkeit in allen Modulen zu gewährleisten.
FAQ: Häufige Fragen
1. Kann ich ein Array in VBA als Konstante deklarieren?
Nein, in VBA ist es nicht möglich, ein Array als Konstante zu deklarieren. Arrays müssen als Variablen definiert werden.
2. Wie kann ich die Größe eines Arrays dynamisch ändern?
Verwende ReDim und ReDim Preserve, um die Größe eines Arrays zur Laufzeit zu ändern, während die vorhandenen Werte erhalten bleiben.
3. Was ist der Unterschied zwischen Public und Private Variablen?
Public Variablen sind in allen Modulen der Arbeitsmappe zugänglich, während Private Variablen nur im Modul, in dem sie deklariert wurden, sichtbar sind.