Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Funktion soll Array zurückgeben

Forumthread: Funktion soll Array zurückgeben

Funktion soll Array zurückgeben
01.09.2004 13:28:33
imtis
Hallo zusammen,
ich möchte eine Funktion schreiben, die ein Array zurückgibt. Folgender Quelltext ist dabei fehlerhaft. Geht das in VBA überhaupt?
Vielen Dank schonmal!

Sub Aufruf ()
Dim BeispielArray()
Redim Preserve BeispielArray(10)
Set BeispielArray = BeispielFunction(10)
End Sub


Function BeispielFunction (Zahl)
Dim vrz()
Redim Preserve vrz(Zahl)
For i = 1 to Zahl
vrz(i) = i
Next i
BeispielFunction = vrz
End Function

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktion soll Array zurückgeben
01.09.2004 15:43:42
Tino
so muesste es eigentlich funktionieren:

Function BeispielFunction(Zahl)
ReDim vrz(1 To Zahl, 1 To 1)
For i = 1 To Zahl
vrz(i, 1) = i
Next i
Beispiel

Function = vrz
End Function

leider nicht...
01.09.2004 16:33:05
imtis
Hallo Tino,
vielen Dank für die Rückmeldung. Leider ist das Problem die Zuweisung des Arrays im Makro Aufruf, also die Zeile:
Set BeispielArray = BeispielFunction(10)
Das Array, was von der Funktion zurückgegeben wird soll in ein Array "BeispielArray" abgelegt werden.
Hast du dafür vielleicht eine Idee?
Anzeige
AW: leider nicht...
01.09.2004 17:08:34
tino
probier mal ohne set:

Sub Aufruf()
Dim BeispielArray()
ReDim Preserve BeispielArray(10)
BeispielArray = BeispielFunction(10)
End Sub

leider auch nicht...
02.09.2004 08:33:43
imtis
Nein, klappt nicht.
Bekomme die Meldung: "Keine Zuweisung an Datenfeld möglich"
Muss ich in der Funktion vielleicht irgendwie kenntlich machen, dass ein Array zurückgegeben wird?
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Funktion in VBA, die ein Array zurückgibt


Schritt-für-Schritt-Anleitung

Um eine Funktion in VBA zu erstellen, die ein Array zurückgibt, folge diesen Schritten:

  1. Öffne den VBA-Editor in Excel (Alt + F11).

  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).

  3. Schreibe die Funktion, die ein Array zurückgibt. Hier ein Beispiel, das die Struktur zeigt:

    Function BeispielFunction(Zahl As Integer) As Variant
       Dim vrz() As Integer
       ReDim vrz(1 To Zahl)
       Dim i As Integer
       For i = 1 To Zahl
           vrz(i) = i
       Next i
       BeispielFunction = vrz
    End Function
  4. Erstelle eine Subroutine, die die Funktion aufruft und das Array speichert:

    Sub Aufruf()
       Dim BeispielArray() As Variant
       BeispielArray = BeispielFunction(10)
    End Sub
  5. Führe die Subroutine aus, um das Array zu testen.


Häufige Fehler und Lösungen

  • Fehler: "Keine Zuweisung an Datenfeld möglich"
    Lösung: Stelle sicher, dass du das Array nicht mit Set zuweist. Verwende einfach BeispielArray = BeispielFunction(10).

  • Fehler beim Array-Datentyp
    Achte darauf, dass die Rückgabewerte im richtigen Datentyp sind. Verwende Variant, wenn du ein Array unterschiedlicher Typen zurückgeben möchtest.


Alternative Methoden

Es gibt verschiedene Möglichkeiten, ein Array in VBA zurückzugeben:

  1. Benutze Variant als Rückgabetyp: Dadurch kannst du unterschiedliche Datentypen im Array speichern.
  2. Verwende ein 2D-Array: Dies ist nützlich, wenn du mehrere Datenreihen zurückgeben möchtest:

    Function BeispielFunction(Zahl As Integer) As Variant
       Dim vrz() As Variant
       ReDim vrz(1 To Zahl, 1 To 1)
       For i = 1 To Zahl
           vrz(i, 1) = i
       Next i
       BeispielFunction = vrz
    End Function

Praktische Beispiele

Hier sind einige praktische Beispiele, die dir helfen, die Funktionsweise besser zu verstehen:

  1. Ein einfaches Array von Zahlen:

    Sub TestArray()
       Dim Zahlen() As Variant
       Zahlen = BeispielFunction(5) ' Gibt ein Array mit 1 bis 5 zurück
       Dim i As Integer
       For i = LBound(Zahlen) To UBound(Zahlen)
           Debug.Print Zahlen(i) ' Gibt die Zahlen 1 bis 5 im Direktfenster aus
       Next i
    End Sub
  2. Ein Array mit Textwerten:

    Function TextArray() As Variant
       Dim Texte(1 To 3) As String
       Texte(1) = "Hallo"
       Texte(2) = "Welt"
       Texte(3) = "!"
       TextArray = Texte
    End Function

Tipps für Profis

  • Verwende Option Explicit: Dies zwingt dich, alle Variablen zu deklarieren, was die Fehlersuche erleichtert.
  • Nutze LBound und UBound: Diese Funktionen helfen dir, die Grenzen deines Arrays zu bestimmen, was besonders bei dynamischen Arrays nützlich ist.
  • Beachte die Leistung: Bei großen Arrays kann die Leistung beeinträchtigt werden. Überlege, ob du die Daten in Excel-Tabellen oder Bereichen speichern kannst, um die Effizienz zu erhöhen.

FAQ: Häufige Fragen

1. Frage
Wie kann ich ein mehrdimensionales Array in VBA zurückgeben?
Antwort
Du kannst ein mehrdimensionales Array zurückgeben, indem du das Array mit ReDim erstellst und die Dimensionen angibst, z. B. ReDim vrz(1 To 10, 1 To 2).

2. Frage
Kann ich ein Array von Strings zurückgeben?
Antwort
Ja, du kannst ein Array von Strings zurückgeben, indem du den Datentyp in der Funktion entsprechend anpasst, z. B. Dim vrz() As String.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige