Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1500to1504
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Function Rückgabewert - Ungültiger Prozeduraufruf

Function Rückgabewert - Ungültiger Prozeduraufruf
01.07.2016 15:35:43
Christian
Hallo zusammen! :)
Habe schon viel im Forum lernen können aber jetzt ist es Zeit für meine erste Frage, da ich keine Antwort finde.
Also ich habe eine Funktion, die eine ArrayList erstellt, die wiederum ArrayLists enthält. Den Code seht ihr hier:

Function CreateDataToInsert()
Set sourceSh = sourceBk.Worksheets(2)
Set targetSh = targetBk.Worksheets("Organization")
Dim c As Range
Dim i As Long
Dim data As New ArrayList
'    Dim data
'    Set data = CreateObject("System.Collections.ArrayList")
On Error Resume Next
For Each c In sourceSh.PivotTables("Organization").DataBodyRange
Dim dataRow As New ArrayList
'        Dim dataRow
'        Set dataRow = CreateObject("System.Collections.ArrayList")
For i = 1 To c.PivotCell.RowItems.count
Debug.Print c.PivotCell.RowItems(i).Name
dataRow.Add c.PivotCell.RowItems(i).Name
Next i
data.Add dataRow
Next c
CreateDataToInsert = data
End Function

Dann habe ich eine Sub, in der ich die Funktion aufrufe und eben die ArrayList, die zurückgegeben wird, weiter verarbeiten will:

Sub FillOrganization()
Set sourceSh = sourceBk.Worksheets(2)
Set targetSh = targetBk.Worksheets("Organization")
Dim dataToInsert As New ArrayList
Dim insertRow As Long
Dim Item As New ArrayList
Dim i As Long
dataToInsert = CreateDataToInsert()
For Each Item In dataToInsert
For i = 0 To 0 Step 1
Debug.Print Item(i)
insertRow = targetSh.Cells(Rows.count, 1).End(xlUp).Row + 1
targetSh.Range("A" & insertRow & ":E" & insertRow).Value = Item(i)
Next
Next
End Sub

Bei dem Aufruf

dataToInsert = CreateDataToInsert()
erhalte ich aber die folgende Fehlermeldung :
Ungültiger Prozeduraufruf oder ungültiges Argument
Liegt es daran, dass eine ArrayList mit ArrayLists zurückkommt aber nur eine normale ArrayList (dataToInsert) initialisiert wird?
Wie kann ich dieses Problem lösen?
Falls die Frage doof ist, sorry aber ich bin erst seit zwei Tagen mit VBA unterwegs und muss mich erst noch so an die Eigenarten gewöhnen.
Danke und schönen Gruß :)
Christian

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Function Rückgabewert - Ungültiger Prozeduraufruf
01.07.2016 16:12:13
Christian
Habe gerade noch was im Inet gefunden und durch etwas ausprobieren hab ich schon die Lösung^^
War der Lösung doch schon ziemlich nahe.
Hier der funktionierende Code für die, die es interessiert:
Function CreateDataToInsert()
Dim c As Range
Dim i As Long
' Dim data As New ArrayList
Dim data
Set data = CreateObject("System.Collections.ArrayList")
On Error Resume Next
For Each c In sourceSh.PivotTables("Organization").DataBodyRange
' Dim dataRow As New ArrayList
Dim dataRow
Set dataRow = CreateObject("System.Collections.ArrayList")
For i = 1 To c.PivotCell.RowItems.count
Debug.Print c.PivotCell.RowItems(i).Name
dataRow.Add c.PivotCell.RowItems(i).Name
Next i
data.Add dataRow
Next c
Set CreateDataToInsert = data
End Function
Sub FillOrganization()
Set sourceSh = sourceBk.Worksheets(2)
Set targetSh = targetBk.Worksheets("Organization")
' Dim dataToInsert As New ArrayList
Dim dataToInsert
' Set dataToInsert = CreateObject("System.Collections.ArrayList")
Dim insertRow As Long
Dim Item As New ArrayList
Dim i As Long
Set dataToInsert = CreateDataToInsert()
For Each Item In dataToInsert
For i = 0 To 0 Step 1
Debug.Print Item(i)
insertRow = targetSh.Cells(Rows.count, 1).End(xlUp).Row + 1
targetSh.Range("A" & insertRow & ":E" & insertRow).Value = Item(i)
Next
Next
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige