Microsoft Excel

Herbers Excel/VBA-Archiv

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

Fehler auslesen | Herbers Excel-Forum


Betrifft: Fehler auslesen von: Horst
Geschrieben am: 30.11.2009 20:48:00

Hallo Excel-Profis,

hat einer eine Ahnung, wie ich folgendes Makro verändern müsste, dass statt in Spalte A in Spalte FF nach dem aktuellen Systemdatum gesucht wird und dann die Zeile nicht nach rechts, sondern nach links bis zur Spalte A nach Fehlern (#Div/0, #NV, #Bezug etc.) überprüft wird.

Sofern ein Fehler auftritt, soll in einer MsgBox ausgegeben werden, in welcher Spalte der Fehler aufgetreten ist

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 auslesen von: Daniel
Geschrieben am: 30.11.2009 20:56:19

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, "FF").Value = Date Then
                For Spalte = .Cells(Zeile, .Columns.Count).End(xlToLeft).Column to 2 Step -1
                    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
Gruß, Daniel


  

Betrifft: AW: Fehler auslesen von: Horst
Geschrieben am: 30.11.2009 22:58:09

Funktioniert super, danke!

Wie kann ich jetzt abschließend noch einbauen, dass bei Auftreten eines Fehlers der in Zeile 1 der jeweiligen Spalte stehende Variablenname zurückgegeben wird (in der MsgBox)?


  

Betrifft: AW: Fehler auslesen von: Daniel
Geschrieben am: 30.11.2009 23:06:28

mit Cells(1, Spalte).Value
Gruß, Daniel


  

Betrifft: AW: Fehler auslesen von: Horst
Geschrieben am: 01.12.2009 21:16:57

funktioniert, danke! Wenn mehr als in einer Spalte Fehler auftreten, wird immer nur die eine Spalte angezeigt. Wie schaffe ich es, dass alle fehlerhaften Spalten aufgelistet werden?

Thx!


  

Betrifft: AW: Fehler auslesen von: Daniel
Geschrieben am: 02.12.2009 23:44:02

du darfst halt nicht mit "Goto NextSheet" die Schleife verlassen.

btw der offizielle Befehl zum vorzeitigen Verlassen einer For-Next-Schleife ist "Exit For", damit wird automatsch zum nächsten Befehl nach NEXT gesprungen.

die Verwendung von Gotos ist Programmiertechnisch gesehen extrem "Old School"
Gruß, Daniel


  

Betrifft: AW: Fehler auslesen von: Horst
Geschrieben am: 06.12.2009 12:02:07

Danke! Es funzt.


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