Arrays in VBA an Subs übergeben
Schritt-für-Schritt-Anleitung
Um ein Array in VBA an eine Sub-Prozedur zu übergeben, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen.
-
Array deklarieren: Deklariere dein Array in der Hauptprozedur (Sub) und fülle es mit Werten.
Dim larArray(40, 5) As Integer
For liIdxR = 0 To 40
For liIdxC = 0 To 5
larArray(liIdxR, liIdxC) = liIdxC
Next
Next
-
Array an Sub übergeben: Rufe die Sub auf und übergebe das Array. Achte darauf, dass das Array als Variant deklariert ist, wenn du es als ByRef übergeben möchtest.
sbUebergabeEinesArrays larArray
-
Sub-Prozedur definieren: Definiere die Sub-Prozedur, die das Array entgegennimmt.
Sub sbUebergabeEinesArrays(ByVal SchrankMit40SchubladenUnd5Faechern)
Dim liIdxR As Integer, liIdxC As Integer
For liIdxR = 0 To 40
For liIdxC = 0 To 5
MsgBox "Schublade " & liIdxR & vbCrLf & "Fach " & liIdxC & vbCrLf & "Inhalt: " & SchrankMit40SchubladenUnd5Faechern(liIdxR, liIdxC)
Next
Next
End Sub
Häufige Fehler und Lösungen
Alternative Methoden
Eine Alternative zur Übergabe eines Arrays ist die Verwendung von String-Arrays. Hier ein Beispiel:
Sub MainProg()
Dim sArr() As String
sArr = Split("A1 B2 C3 D4 E5 F6 G7")
Call Unterprog(sArr)
End Sub
Sub Unterprog(sArr() As String)
MsgBox sArr(2)
End Sub
Diese Methode eignet sich besonders, wenn du keine numerischen Daten, sondern Text verarbeiten möchtest.
Praktische Beispiele
Hier sind einige praktische Beispiele zur Verwendung von vba array übergeben.
Beispiel 1: Übergeben eines 2-dimensionalen Arrays
Sub BeispielUebergabe()
Dim myArray(1 To 3, 1 To 2) As Integer
myArray(1, 1) = 1
myArray(1, 2) = 2
myArray(2, 1) = 3
myArray(2, 2) = 4
myArray(3, 1) = 5
myArray(3, 2) = 6
Call VerarbeiteArray(myArray)
End Sub
Sub VerarbeiteArray(arr() As Integer)
Dim i As Integer, j As Integer
For i = LBound(arr, 1) To UBound(arr, 1)
For j = LBound(arr, 2) To UBound(arr, 2)
Debug.Print arr(i, j)
Next j
Next i
End Sub
Beispiel 2: Nutzung von ByRef
Wenn du ein Array ändern möchtest, übergebe es mit ByRef:
Sub AendereArray(ByRef arr() As Integer)
Dim i As Integer
For i = LBound(arr) To UBound(arr)
arr(i) = arr(i) * 2
Next i
End Sub
Tipps für Profis
-
Verwendung von ByRef und ByVal: Überlege dir gut, ob du ein Array ByRef oder ByVal übergibst. Wenn du das Array nicht verändern möchtest, ist ByVal sicherer.
-
Performance: Teste die Laufzeitunterschiede zwischen verschiedenen Übertragungsmethoden, insbesondere wenn du große Datenmengen verarbeitest.
-
Debugging: Nutze Debug.Print, um den Inhalt deines Arrays während der Laufzeit zu überprüfen.
FAQ: Häufige Fragen
1. Wie kann ich ein Array in VBA an eine Funktion übergeben?
Du kannst es auf die gleiche Weise wie bei einer Sub übergeben, indem du die Funktion aufrufst und das Array übergibst.
2. Was ist der Unterschied zwischen ByRef und ByVal bei der Übergabe von Arrays?
ByRef übergibt eine Referenz des Arrays, was bedeutet, dass Änderungen im Sub auch im Hauptprogramm sichtbar sind. ByVal erstellt eine Kopie des Arrays, sodass Änderungen nicht zurückgegeben werden.