mit nachfolgendem Befehl fülle ich mein Array arrMasterdata:
arrMasterdata = wbMasterdata.Worksheets(sTab).Range("A1:" & s)
Das klappt gut und noch dazu sehr schnell.
Mit den Daten des Arrays fülle ich dann ein Listview:
[CODE]
Private Sub DatenLesenUpdate(sFilter As String)
Dim lRow As Long, iCol As Integer
Dim LI As ListItem, LSI As ListSubItem
On Error GoTo DatenLesenUpdate_Error
If sFilter "" Then sFilter = "*" & sFilter & "*"
With Me.lstMaterials
.ListItems.Clear
If sFilter "" Then
For lRow = 1 To UBound(arrMasterdata)
If UCase(arrMasterdata(lRow, 2)) Like UCase(sFilter) Then
Set LI = .ListItems.Add(, "x" & lRow, arrMasterdata(lRow, 1))
For iCol = 2 To 3
Set LSI = LI.ListSubItems.Add(, , arrMasterdata(lRow, iCol))
Next iCol
End If
Next lRow
Else
For lRow = 1 To UBound(arrMasterdata)
Set LI = .ListItems.Add(, "x" & lRow, arrMasterdata(lRow, 1))
For iCol = 2 To 3
Set LSI = LI.ListSubItems.Add(, , arrMasterdata(lRow, iCol))
Next iCol
Next lRow
End If
.ListItems.Remove (1)
Me.lblMaterialsCount.Caption = Format(.ListItems.Count, "#,##0") & " Items found for '" & _
_
Me.txtMaterialsuche & "'"
End With
On Error GoTo 0
Exit Sub
DatenLesenUpdate_Error:
Select Case Err.Number
Case 13
' #NV in Quelldatei
Set LSI = LI.ListSubItems.Add(, , "#NV")
Resume Next
Case 35600
' keine Überschrift in lv
Resume Next
Case Else
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure _
DatenLesenUpdate of Formular frmMaterialsuche"
End Select
End Sub
[/CODE]
Leider kann ich nicht alle fehlerhaften Zellinhalte im Array (beginnt mit '#') abfangen, so erhalte ich manchmal einen Wert 'Fehler 2042'...
Vielen Dank für Eure Hilfe.
Mike