Excel VBA Laufzeitfehler '13' Typ stimmt nicht überein

8

Ich habe ein Makro für eine Datei erstellt und zuerst hat es funktioniert, aber heute habe ich die Datei und das Makro hunderte Male geöffnet und neu gestartet und bekomme immer den folgenden Fehler: Excel VBA Laufzeitfehler 13 'Typ stimmt nicht überein

Ich habe an dem Makro nichts geändert und weiß nicht, warum ich den Fehler erhalte. Darüber hinaus dauert es ewig, das Makro jedes Mal zu aktualisieren, wenn ich es aktiviere (das Makro muss ungefähr 9000 Zeilen ausführen).

Der Fehler liegt zwischen ** **.

VBA:

%Vor%

Glaubst du, du kannst mir helfen? Ich benutze Excel 2010 auf Windows 7. Vielen Dank

    
Diogo 16.01.2012, 19:52
quelle

6 Antworten

9

Sie würden eine Typabweichung erhalten, wenn Sheets(name).Cells(4 + i, 57) einen nicht-numerischen Wert enthält. Sie sollten die Felder validieren, bevor Sie davon ausgehen, dass es sich um Zahlen handelt, und versuchen, sie zu subtrahieren.

Außerdem sollten Sie Option Strict aktivieren, so dass Sie gezwungen sind, Ihre Variablen explizit zu konvertieren, bevor Sie versuchen, typabhängige Operationen wie Subtraktion durchzuführen. Das wird Ihnen helfen, Probleme auch in Zukunft zu identifizieren und zu beseitigen. Leider ist Option Strict nur für VB.NET. Dennoch sollten Sie nach Best Practices für explizite Datentypkonvertierungen in VBA suchen.

Aktualisierung:

Wenn Sie versuchen, den Code schnell zu korrigieren, wickeln Sie jedoch die Zeile ** und die folgende Zeile in die folgende Bedingung:

%Vor%

Beachten Sie, dass Ihr x -Wert jedoch möglicherweise nicht den erwarteten Wert in der nächsten Iteration enthält.

    
Devin Burke 16.01.2012 19:55
quelle
4

Danke Leute für all eure Hilfe! Endlich konnte ich es dank einem Freund und auch Dir perfekt machen! Hier ist der endgültige Code, damit Sie auch sehen können, wie wir es lösen.

Nochmals vielen Dank!

%Vor%     
Diogo 17.01.2012 16:50
quelle
1

Diogo

Justin hat dir einige sehr gute Tipps gegeben:)

Sie erhalten diesen Fehler auch, wenn die Zelle, in der Sie die Berechnung durchführen, einen Fehler aufgrund einer Formel hat.

Zum Beispiel, wenn Zelle A1 # DIV / 0 hat! Fehler dann erhalten Sie "Excel VBA Laufzeitfehler" 13 "Typ nicht übereinstimmen" bei der Durchführung dieses Codes

%Vor%

Ich habe ein paar kleine Änderungen an Ihrem Code vorgenommen. Könntest du es bitte für mich testen? Kopieren Sie den Code mit den Zeilennummern, da ich sie absichtlich dort abgelegt habe.

%Vor%     
Siddharth Rout 16.01.2012 23:15
quelle
0
%Vor%     
chetan dubey 09.10.2015 10:10
quelle
0

Ich hatte das gleiche Problem wie Sie oben erwähnt haben und mein Code war gestern den ganzen Tag gut.

Ich habe heute morgen weiter programmiert und als ich meine Anwendung (meine Datei mit einem Auto_Open-Sub) geöffnet habe, bekam ich den Laufzeitfehler '13' Type mismatch, ich ging ins Internet, um Antworten zu finden, ich habe viel ausprobiert von Dingen, Modifikationen und an einem Punkt erinnerte ich mich, dass ich irgendwo über "Ghost" -Daten gelesen habe, die in einer Zelle bleiben, selbst wenn wir sie nicht sehen.

Mein Code überträgt nur Daten von einer Datei, die ich zuvor geöffnet habe, und summiere sie. Mein Code stoppte beim dritten SheetTab (so ging es richtig für die 2 vorherigen SheetTab, wo der gleiche Code ohne anzuhalten ging) mit der Type Mismatch Nachricht. Und das geschieht jedes Mal am selben SheetTab, wenn ich meinen Code neu starte.

Also habe ich die Zelle ausgewählt, in der sie gestoppt wurde, manuell 0,00 eingegeben (weil die Typabweichung von einer Summationsvariablen in einem DIM als Double deklariert wurde) und diese Zelle in alle nachfolgenden Zellen kopiert, in denen das gleiche Problem auftrat. Es hat das Problem gelöst. Hatte die Nachricht nie wieder. Nichts mit meinem Code zu tun, sondern der "Ghost" oder Daten aus der Vergangenheit. Es ist wie wenn Sie das Control + End verwenden möchten und Excel Sie an die Stelle bringt, an der Sie einmal Daten hatten, und sie gelöscht hat. Mußte "Speichern" und die Datei schließen, wenn Sie Control + End verwenden wollten, um sicherzustellen, dass Excel auf die richtige Zelle zeigte.

    
Youbi 11.10.2013 19:14
quelle
0

Dieser Fehler tritt auf, wenn der Eingabevariablentyp falsch ist. Sie haben wahrscheinlich eine Formel in Cells(4 + i, 57) geschrieben, die anstelle von =0 die Formel = "" verwendet hat. Bei der Ausführung wird dieser Fehler angezeigt. Weil der leere String nicht gleich Null ist.

    
gadolf 13.12.2016 21:12
quelle

Tags und Links