Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1112to1116
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fehler auslesen

Fehler auslesen
Horst
Hallo Excel-Gemeinde,
wie kann ich per VBA-Prozedur Fehlerwerte (also #NV, Bezugsfehler usw.) aus jedem Registerblatt einer .xls auslesen. Es soll lediglich eine Messagebox kommen, ob Fehler in der .xls enthalten sind oder nicht. Dabei steht in jedem Registerblatt in Spalte A das Datum. Der VBA-Code soll nun dort das Systemdatum suchen und rechts davon prüfen, ob in dieser Zeile ein Fehler ist.
Vielen Dank!
Suche in der Hilfe nach CVERR() _oT
10.11.2009 12:51:42
NoNet
_oT = "ohne Text"
AW: Suche in der Hilfe nach CVERR() _oT
10.11.2009 14:00:55
Horst
CVERR() ist gut, aber wie baue ich den Befehl in den Code ein?
Thx!
AW: Suche in der Hilfe nach CVERR() _oT
10.11.2009 15:39:16
fcs
Hallo Horst,
eine Fehlersuche sieht z.B. etwa wie folgt aus.
Gruß
Franz
Sub aaTest()
If fncMappenFehler(ActiveWorkbook) = False Then
MsgBox "Keine Fehler"
Else
End If
End Sub
Function fncMappenFehler(wb As Workbook) As Boolean
Dim wks As Worksheet, strMsg As String
Dim Zelle As Range
'Fehler Suche im Bereich B1:xx1 aller Tabellenblätter
For Each wks In wb.Worksheets
With wks
For Each Zelle In .UsedRange
If IsError(Zelle.Value) Then
strMsg = strMsg & vbLf & .Name
Exit For
End If
Next
End With
Next
If strMsg = "" Then
fncMappenFehler = False
Else
fncMappenFehler = True
MsgBox "Fehler in : " & strMsg
End If
End Function

Anzeige
AW: Suche in der Hilfe nach CVERR() _oT
10.11.2009 16:21:07
Horst
Hallo Franz,
vielen Dank! Wie würde ich jetzt noch einbauen, dass in jedem Registerblatt in der Datumsspalte A nur die Zeile mit dem aktuellen Systemdatum nach Fehlern durchsucht wird (z.b. der Bereich B448:IV448)?
AW: Suche in der Hilfe nach CVERR() _oT
10.11.2009 17:08:27
fcs
Hallo Horst,
dann muss man die Prüfung ein wenig anders aufbauen - nämlich Zeilenweise.
Die Routine vergleicht jetzt beginnend von unten die Werte in Spalte A mit dem aktuellen Systemdatum und prüft bei Übereinstimmung die Werte in der Zeile.
Gruß
Franz
Sub aaTest()
If fncMappenFehler(ActiveWorkbook) = False Then
MsgBox "Keine Fehler"
Else
End If
End Sub
Function fncMappenFehler(wb As Workbook) As Boolean
Dim wks As Worksheet, strMsg As String
Dim Zeile As Long, Spalte As Long
'Fehler Suche im Bereich B1:xx1 aller Tabellenblätter
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
Exit For 'wenn dass Systemdatum nur einmal in Spalte A vorkommen kann sonst _
diese Zeile rausnehmen
End If
Next
NextSheet:
End With
Next
If strMsg = "" Then
fncMappenFehler = False
Else
fncMappenFehler = True
MsgBox "Fehler in : " & strMsg
End If
End Function

Anzeige
AW: Suche in der Hilfe nach CVERR() _oT
10.11.2009 21:00:59
Horst
Hallo Franz,
besten Dank! Wenn man möchte, dass das Makro auch Fehler in einer anderen als der aktuell geöffneten .xls sucht, muss man einbauen, dass die externe .xls dafür geöffnet und dann wieder geschlossen wird? Muss dafür das Makro in der externen .xls gespeichert werden?
AW: Suche in der Hilfe nach CVERR() _oT
10.11.2009 21:01:05
Horst
Hallo Franz,
besten Dank! Wenn man möchte, dass das Makro auch Fehler in einer anderen als der aktuell geöffneten .xls sucht, muss man einbauen, dass die externe .xls dafür geöffnet und dann wieder geschlossen wird? Muss dafür das Makro in der externen .xls gespeichert werden?
AW: Suche in der Hilfe nach CVERR() _oT
10.11.2009 21:42:36
fcs
Hallo Horst,
Nein. Du kannst die Prüfung von einer externen Datei aus ausführen.
Gruß
Franz
Beispiel:

Sub aaTest()
Dim wb
Set wb = GetObject("C:\Users\Public\Test\Quelle01.xls")
If fncMappenFehler(Workbooks(wb.Name)) = False Then
MsgBox "Keine Fehler"
Else
End If
wb.Close savechanges:=False
End Sub

Anzeige
AW: Suche in der Hilfe nach CVERR() _oT
11.11.2009 20:06:37
Horst
Beim Anwenden ds Makros auf eine Arbeitsmappe mit externen Bezügen:
Kann ich die dann aufpoppende Meldung "Diese Arbeitsmappe enthält mehrere Verknüpfungen, die nicht aktualisiert werden können" irgendwie vermeiden, zB. mit ShowAlert=False?
Sonst funktioniert alles prima. Besten Dank auch!
AW: Suche in der Hilfe nach CVERR() _oT
12.11.2009 00:41:53
fcs
Hallo Horst,
ich hab keine Ahnung.
Probier ShowAlert=False doch aus, aber nicht vergessen am Ende des Makros wieder auf True zusetzen.
Gruß
Franz
AW: Suche in der Hilfe nach CVERR() _oT
12.11.2009 15:58:55
Horst
nein, show alerts funktioniert nicht. Was gibt's noch um Fehlermeldungen zu verhindern? Am besten mit SendKeys auf Weiter drücken!
Anzeige
Fehlerzellen in allen Worksheets suchen
10.11.2009 19:49:46
NoNet
Hallo Horst,
ich hatte erst jetzt wieder Zeit, in den Thread zu schauen - hier mein Lösungsvorschlag :
VBA-Code:
Sub Fehlerzellen()
    Dim rngFehlerK As Range, rngFehlerF As Range
    Dim rngFehler As Range, rngZelle As Range
    On Error Resume Next
    For Each wsh In Worksheets
        With wsh
            Set rngFehlerF = Nothing
            Set rngFehlerK = Nothing
            Set rngFehlerF = .Cells.SpecialCells(xlCellTypeFormulas, 16)
            Set rngFehlerK = .Cells.SpecialCells(xlCellTypeConstants, 16)
            If rngFehlerK Is Nothing Then
                If rngFehlerF Is Nothing Then
                    Set rngFehler = Nothing
                Else
                    Set rngFehler = rngFehlerF
                End If
            Else
                If rngFehlerF Is Nothing Then
                    Set rngFehler = rngFehlerK
                Else
                    Set rngFehler = Union(rngFehlerK, rngFehlerF)
                End If
            End If
            If rngFehler Is Nothing Then
                MsgBox "Keine Fehlerzellen gefunden !", vbOKOnly, wsh.Name
            Else
                For Each rngZelle In rngFehler
                    MsgBox rngZelle.Address, vbOKOnly, wsh.Name
                Next
            End If
        End With
    Next
End Sub
Gruß, NoNet
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige