Microsoft Excel

Herbers Excel/VBA-Archiv

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

Fehler suchen | Herbers Excel-Forum


Betrifft: Fehler suchen von: Horst
Geschrieben am: 28.11.2009 21:44:21

Hallo Excel Freunde,

wie kann ich folgende Funktion umschreiben, sodass in der Spalte FF nach dem aktuellen Systemdatum und in dieser Zeile nach links bis zur Spalte A nach Fehlern wie #Div/0, #NV, #Bezug usw. gesucht wird?

Ergebis soll eine MsgBox sein, die anzeigt, in welcher Spalte der Fehler aufgetreten ist, indem sie die in Zeile A stehende Bezeichnung der Spalte ausgibt.

Besten Dank für Eure Vorschläge!

Function fncMappenFehler(wb As Workbook) As Boolean
    Dim wks As Worksheet, strMsg As String
    Dim Zeile As Long, Spalte As Long

    For Each wks In wb.Worksheets
      With wks
        For Zeile = .Cells(.Rows.Count, 1).End(xlUp).Row To 1 Step -1
            If .Cells(Zeile, 1).Value = Date Then
              For Spalte = 2 To .Cells(Zeile, .Columns.Count).End(xlToLeft).Column
                  If IsError(.Cells(Zeile, Spalte).Value) Then
                      strMsg = strMsg & vbLf & .Name
                      GoTo NextSheet
                  End If
              Next
             
            End If
        Next
NextSheet:
      End With
    Next
    If strMsg = "" Then
      fncMappenFehler = False
    Else
      fncMappenFehler = True
      MsgBox "Fehler in ...:" & strMsg
    End If
  End Function

  

Betrifft: AW: Fehler suchen von: IngGi
Geschrieben am: 28.11.2009 23:02:08

Hallo Horst,

folgender Code kommt in ein allgemeines Modul und bezieht sich dann auf das aktuelle Tabellenblatt. Wenn du den Code in das Modul eines Tabellenblattes kopierst, bezieht er sich immer auf dieses Tabellenblatt.

Sub Fehler_finden()

Dim rng As Range
Dim rngDatum As Range

Set rngDatum = Range("FF:FF").Find(Date)

If rngDatum Is Nothing Then
  MsgBox "Das aktuelle Datum konnte in Spalte FF nicht gefunden werden!", vbCritical
  Exit Sub
End If

For Each rng In Range(Range("A" & rngDatum.Row), rngDatum.Offset(0, -1))
  If IsError(rng) Then
    MsgBox "Der Fehler befindet sich in der Zelle " & rng.Address
    Exit Sub
  End If
Next 'rng 

MsgBox "Es konnte kein Fehler in Zeile " & rngDatum.Row & _
  " gefunden werden!", vbInformation

End Sub
Code eingefügt mit VBA in HTML 2.0.0.3

Gruß Ingolf


  

Betrifft: AW: Fehler suchen von: Horst
Geschrieben am: 29.11.2009 17:33:55

Hallo!

Ich bekomme die Fehlermeldung "Das aktuelle Datum konnte in Spalte FF nicht gefunden werden!", obwohl es in Spalte FF enthalten ist. Kann man nicht den folgenden Code verändern, sodass ausgehend vom aktuellen Systemdatum in Spalte 162 ("FF") statt nach rechts nach links bis einschließlich Spalte A gesucht wird?

Thx!

For Each wks In wb.Worksheets
With wks
For Zeile = .Cells(.Rows.Count, 1).End(xlUp).Row To 1 Step -1
If .Cells(Zeile, 1).Value = Date Then
For Spalte = 2 To .Cells(Zeile, .Columns.Count).End(xlToLeft).Column
If IsError(.Cells(Zeile, Spalte).Value) Then
strMsg = strMsg & vbLf & .Name
GoTo NextSheet
End If
Next


  

Betrifft: AW: Fehler suchen von: IngGi
Geschrieben am: 30.11.2009 20:51:09

Hallo Horst,

möglicherweise so (siehe abgesetzte Codezeile), allerdings weiß ich nicht wirklich, ob das funktioniert, da dein Codeschnipsel wirklich sehr klein ist (wie du an den Einrückungen siehst, umfasst er nicht mal alle angefangenen Kontrollstrukturen bis zu deren Ende). Die Zeile "GoTo NextSheet" kommt mir auch schleierhaft vor, die Sheets werden doch in einer For Each...Next-Schleife abgeklappert???

For Each wks In wb.Worksheets
  With wks
    For Zeile = .Cells(.Rows.Count, 1).End(xlUp).Row To 1 Step -1
      If .Cells(Zeile, 1).Value = Date Then
      
      
      For Spalte = 161 To 1 Step -1
      
      
        If IsError(.Cells(Zeile, Spalte).Value) Then
          strMsg = strMsg & vbLf & .Name
          GoTo NextSheet
        End If
      Next
Code eingefügt mit VBA in HTML 2.0.0.3

Findet er damit das Datum? Würde mich ehrlich gesagt wundern, da er wie mein Code nach einem Datum sucht und ich mal vermute, dass die Datumsangaben auf deinen Sheets Strings sind. Aber das ist natürlich nur spekuliert.

Gruß Ingolf


  

Betrifft: AW: Fehler suchen von: Horst
Geschrieben am: 01.12.2009 21:22:36

in dem Fall muss es heißen:

For Zeile = .Cells(.Rows.Count, 1).End(xlUp).Row To 1 Step -1
If .Cells(Zeile, "FF").Value = Date Then


dann funktioniert's. Aber besten Dank! Frage ist bereits geklärt.


Beiträge aus den Excel-Beispielen zum Thema "Fehler suchen"