Wie stelle ich fest, ob ein Fehler in einer Zelle in der gesamten Arbeitsmappe mit Excel VBA auftritt?

7

F: Wie kann ich feststellen, ob ein Fehler in einer Zelle in der gesamten Arbeitsmappe mit Excel VBA auftritt?

Normalerweise werden Fehler durch 0 oder #Wert Fehler dividiert, aber diese Liste ist nicht erschöpfend (oder ist das? - ich weiß nicht, ob es mehr gibt)

Gibt es eine Möglichkeit zu bestimmen, ob eine Zelle einen Fehler enthält, um dann die weitere Verarbeitung in meinem Skript zu überspringen, ohne eine Debug / Warnung / Fehlermeldung auszugeben.

etwas wie

%Vor%

Dabei ist jump eine Markierung am Ende eines if-Statmenets, aber innerhalb einer Schleife.

Das Skript vergleicht Werte zwischen zwei Arbeitsmappen und aktualisiert die aktuelle Arbeitsmappe mit Farben, um Unterschiede anzuzeigen.

Ich habe überhaupt keine VBA-Erfahrung. aber ich bekomme den Kern des Skripts, das mir gegeben wurde.

danke schön.

    
ChelseaStats 22.11.2011, 17:00
quelle

5 Antworten

15

Sie können Zellen mit Fehlern überspringen, indem Sie die Funktion VarType verwenden. Zum Beispiel:

%Vor%

Die Funktion VarType ist auch sehr nützlich, um den Datentyp zu validieren. Wenn Ihr Code beispielsweise einen Datumswert erwartet, aber manchmal auf Text stößt, können Sie diese Funktion verwenden, um die Daten zu überprüfen und Ausnahmen ordnungsgemäß zu behandeln.

    
Rachel Hettinger 22.11.2011, 19:18
quelle
3

Hier ist ein Codefragment, das im Direktfenster den Namen des Arbeitsblatts, die Zellenadresse und die Formel aufzeichnet, wo es einen Tabellenformularfehler gibt ...

%Vor%     
SkipVought 22.11.2011 21:39
quelle
3

Wenn Sie Ihre erste Frage haben, wie Sie Fehler in einer beliebigen Zelle der Arbeitsmappe mit VBA feststellen, dann sollten Sie nach einem sehr effizienten Ansatz suchen - das Betrachten jeder Zelle ist sehr zeitaufwändig!

Zwei Optionen hierfür sind:

  1. Verwenden Sie Excel's SpecialCells, um den Prozess zu verkürzen
  2. benutze meine Mappit! addin , das für die Meldung von Tabellenkalkulationsfehlern konfiguriert ist

Für SpecialCells sehen Sie bitte den Code unten. Dies nutzt die vorgefertigte Sammlung von Fehlern, die als Formeln existieren

Bitte beachten Sie, dass diese Konstanten auch eine Fehlerauflistung enthalten. Wenn Sie also kopiert haben, führen Sie einen speziellen Wert als Wert für einen Formelfehler aus, dann müssen Sie Set rng1 = ws.Cells.SpecialCells(xlConstants, xlErrors) verwenden, um diese zu erkennen. p>

Sie können SpecialCells auch manuell mit

erkennen
  • Markieren Sie alle Zellen im Interessenbereich
  • Drücken Sie F5
  • Klicken Sie auf "Spezial"
  • wähle 'Fehler' unter 'Formeln' (oder 'Konstanten')

Bitte beachten Sie, dass es vor xl2010 ein Limit von 8192 Bereichen gibt, die von SpecialCells verwendet werden können handle

%Vor%     
brettdj 23.11.2011 09:35
quelle
2

Sie können die Funktion IsError() von VBA sowie als Formel in einem Arbeitsblatt verwenden.

Siehe Ссылка für ein Beispiel.

    
Neil Barnwell 22.11.2011 17:06
quelle
0

Es gibt noch eine andere Möglichkeit, dies zu tun: füge On Error Resume Next in deinen Code ein (normalerweise lege es einfach vor die Schleife).

Wenn eine Zelle ein Fehler ist, wird sie einfach übersprungen und zum nächsten Element in der Schleife bewegt:)

    
aevanko 23.11.2011 00:33
quelle

Tags und Links