Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Fehlerhafte Werte im Array ersetzen

Betrifft: Fehlerhafte Werte im Array ersetzen von: Mike
Geschrieben am: 22.09.2014 14:58:18

Hallo Zusammen,

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

  

Betrifft: AW: Fehlerhafte Werte im Array ersetzen von: Daniel
Geschrieben am: 22.09.2014 15:18:44

Hi

Fehlerwerte bereiten bei direkten Zellvergleichen Schwierigkeiten.
Du kannst die Fehlerwerte in der Schleife mit folgender Prüfung überspringen (sollte natürlich als erste erfolgen:

If VarType(arrMasterdata(lRow, 2)) <> vbError Then
  '--- hier dann der Weitere Code für den Fall, dass im Array ein normaler Wert steht
End If
Gruß Daniel


  

Betrifft: AW: Fehlerhafte Werte im Array ersetzen von: Mike
Geschrieben am: 22.09.2014 16:42:49

Hi Daniel,

super, vielen Dank für den Tipp.

Grüsse, Mike


 

Beiträge aus den Excel-Beispielen zum Thema "Fehlerhafte Werte im Array ersetzen"