Domino 9 und frühere Versionen > ND9: Entwicklung

Array von Arrays zurück geben

(1/2) > >>

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