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

VBA: Datenfeld an Funktion übergeben

Forumthread: VBA: Datenfeld an Funktion übergeben

VBA: Datenfeld an Funktion übergeben
26.06.2006 22:23:35
Frederik
Hallo Forum,
habe folgendes VBA Problem:
ich möchte ein Datenfeld an eine Funktion übergeben und verwende dazu folgenden Code:
Sub Makro1()
Dim ArrayA(1 To 10) As Variant
VerarbeiteArray (ArrayA)
End Sub

Private Function VerarbeiteArray(ByRef ArrayA() As Variant)
End Function

Beim Ausführen von Marko1 erhalte ich immer die Fehlermeldung "Unverträglicher Tap: Datenfeld oder Benutzerdefinierter Tay erwartet". Was mache ich hier falsch?
Gruß und schonmal vielen Dank
Frederik
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Datenfeld an Funktion übergeben
26.06.2006 22:43:15
MichaV
Hi,
übergebe das Datenfeld an eine Variant- Variable.

Private Function VerarbeiteArray(ByRef ArrayA As Variant)
End Function

Gruss- Micha
PS: Rückmeldung wäre nett.
Anzeige
;
Anzeige

Infobox / Tutorial

VBA: Datenfeld an Funktion übergeben


Schritt-für-Schritt-Anleitung

Um ein Datenfeld an eine Funktion in VBA korrekt zu übergeben, folge diesen Schritten:

  1. Definiere das Datenfeld: Erstelle ein Array in deinem Makro. Zum Beispiel:

    Sub Makro1()
        Dim ArrayA(1 To 10) As Variant
        ' Füge hier deine Logik zum Befüllen des Arrays ein
        VerarbeiteArray ArrayA
    End Sub
  2. Ändere die Funktionsdefinition: Stelle sicher, dass du das Array als Variant übergibst. Ändere die Funktionsdefinition wie folgt:

    Private Function VerarbeiteArray(ByRef ArrayA As Variant)
        ' Hier kommt die Logik zur Verarbeitung des Arrays
    End Function
  3. Verwende die Funktion: Jetzt kannst du die Funktion VerarbeiteArray innerhalb deines Makros aufrufen, ohne die Fehlermeldung zu erhalten.


Häufige Fehler und Lösungen

Ein häufiger Fehler, der auftritt, ist die Verwendung des falschen Datentyps beim Übergeben des Arrays. Wenn du die Fehlermeldung "Unverträglicher Typ: Datenfeld oder Benutzerdefinierter Typ erwartet" erhältst, liegt das oft daran, dass das Array nicht als Variant deklariert ist.

Lösung: Stelle sicher, dass du die Funktion VerarbeiteArray so definierst, dass sie ein Variant akzeptiert.


Alternative Methoden

Falls du Probleme mit der Übergabe eines Datenfeldes hast, gibt es alternative Methoden:

  • Verwendung von Collections: Anstelle eines Arrays kannst du auch eine Collection verwenden, die flexibler ist:

    Dim col As New Collection
    col.Add "Wert1"
    col.Add "Wert2"
    VerarbeiteCollection col
  • Direkte Übergabe von Werten: Wenn du nur einige Werte benötigst, kannst du diese auch direkt übergeben, anstatt ein Array zu verwenden.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du ein Array an eine Funktion übergibst und es dort verarbeitest:

Sub Makro2()
    Dim ArrayB(1 To 5) As Variant
    Dim i As Integer

    ' Befülle das Array
    For i = 1 To 5
        ArrayB(i) = i * 10
    Next i

    ' Übergabe an die Funktion
    VerarbeiteArray ArrayB
End Sub

Private Function VerarbeiteArray(ByRef ArrayB As Variant)
    Dim i As Integer
    For i = LBound(ArrayB) To UBound(ArrayB)
        Debug.Print ArrayB(i) ' Gibt die Werte im Direktfenster aus
    Next i
End Function

Tipps für Profis

  • Fehlerbehandlung einfügen: Nutze On Error Resume Next oder On Error GoTo für eine bessere Fehlerbehandlung in deinen Funktionen.
  • Datenfeld-Größe dynamisch anpassen: Verwende ReDim für dynamische Arrays, um die Größe zur Laufzeit anzupassen.
  • Nutze Module: Lagere häufig verwendete Funktionen in Module aus, um deine Makros übersichtlicher zu gestalten.

FAQ: Häufige Fragen

1. Frage
Wie kann ich ein mehrdimensionales Array an eine Funktion übergeben?
Antwort: Du kannst ein mehrdimensionales Array auf ähnliche Weise übergeben, indem du die Funktionsdefinition anpasst:

Private Function VerarbeiteArray(ByRef ArrayA As Variant)
    ' Logik hier
End Function

2. Frage
Was mache ich, wenn ich eine Fehlermeldung bekomme, dass der Typ nicht übereinstimmt?
Antwort: Überprüfe die Datentypen in deiner Funktionsdefinition und stelle sicher, dass du das Array als Variant übergibst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige