Domino 9 und frühere Versionen > ND9: Entwicklung
Array von Arrays zurück geben
HH:
Hallo zusammen,
mit der folgenden Funktion lese ich Daten aus einer Excel-Tabelle aus und speichere die Daten in einem Array von Arrays:
--- Code: --- Function getData( xlSheet As Variant, columnCount As Integer ) As Variant
If columnCount = 1 Then
Print "Abbruch, Spaltenanzahl = 0"
Exit Function
End If
On Error GoTo fehler
Dim i As Integer
Dim currentRow As Integer
currentRow = m_titleRowNumber + 1
Dim currentColumn As Integer
currentColumn = 1
Dim rowArrayIndex As Integer
rowArrayIndex = 0
Dim columnArrayIndex As Integer
columnArrayIndex = 0
Dim resultArray() As Variant
Dim cellValue As String
'Print "currentRow = " & currentRow & ", cancelColumnNumber = " & m_cancelColumnNumber
cellValue = xlSheet.cells( currentRow, m_cancelColumnNumber ).value
Do While cellValue <> ""
Print "lese Daten, Zeile " & currentRow
ReDim Preserve resultArray( rowArrayIndex )
Dim columnValuesArray() As string
'Print "columnCount = " & columnCount
redim columnValuesArray( 0 To columnCount -1 )
columnArrayIndex = 0
For i = 0 To columnCount -1
columnValuesArray(i) = xlSheet.cells( currentRow, i+1 ).value
Next
resultArray( rowArrayIndex) = columnValuesArray
rowArrayIndex = rowArrayIndex + 1
currentRow = currentRow + 1
cellValue = xlSheet.cells( currentRow, m_cancelColumnNumber ).value
Loop
For i = 0 To UBound( resultArray )
Print i & " = " & Join( resultArray(i), "~" )
Next
Stop
getData = resultArray
weiter:
Exit Function
fehler:
MsgBox Error & Chr(13) & "Zeile: " & Erl & Chr(13) & "Nr.: " & Err & Chr(13) & "Modul: " & "getData", 16, "Fehler"
Resume weiter
End Function
--- Ende Code ---
Das läuft alles wie gewünscht. Die Daten werden eingelesen und in der Testschleife auch ausgegeben. Allerdings wirft die Zeile
--- Code: --- getData = resultArray
--- Ende Code ---
eine Type missmatch Fehler.
Hat jemand eine Idee, woran das liegen könnte?
Gruß
Hubert
Hatschi:
Hallo Hubert,
probier mal
Dim resultArray() As Variant
ohne die Klammern, also
Dim resultArray As Variant.
Bernd
HH:
Hallo Bernd,
dann kracht es bei
--- Code: ---ReDim Preserve resultArray( rowArrayIndex )
--- Ende Code ---
Hab's auch schon mit ein List-Variablen versuch, also
--- Code: ---Dim resultList list As Variant
--- Ende Code ---
und
--- Code: ---resultList( CStr(rowArrayIndex) ) = columnValuesArray
--- Ende Code ---
Das bringt dann aber auch den Type missmatch bei der Zuweisung de Rückgabewertes:
--- Code: ---getDataAsList = resultList
--- Ende Code ---
Hubert
Hatschi:
Hm und wenn du noch eine Hilfsvariable einlegst?
--- Code: ---Dim Hilfe as variant
--- Ende Code ---
und zum Ende statt
--- Code: ---getData = resultArray
--- Ende Code ---
--- Code: ---hilfe = resultArray
getData = hilfe
--- Ende Code ---
ghostmw:
Hi,
ich denke die Lösung, die dir zuerst genannt wurde, ist gut und nur die halbe "Miete".
Du musst natürlich an der Stelle vor dem Redim preserve erstmal ein Array haben, also eine Abfrage reinmachen.
--- Code: ---if not isarray ( Variable ) then redim Variable( count ) else redim PRESERVE variable ( count )
--- Ende Code ---
Gruß
Marco
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln