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.
Sie können Zellen mit Fehlern überspringen, indem Sie die Funktion VarType
verwenden. Zum Beispiel:
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.
Hier ist ein Codefragment, das im Direktfenster den Namen des Arbeitsblatts, die Zellenadresse und die Formel aufzeichnet, wo es einen Tabellenformularfehler gibt ...
%Vor%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:
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
Bitte beachten Sie, dass es vor xl2010 ein Limit von 8192 Bereichen gibt, die von SpecialCells verwendet werden können handle
%Vor% Sie können die Funktion IsError()
von VBA sowie als Formel in einem Arbeitsblatt verwenden.
Siehe Ссылка für ein Beispiel.