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
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
Leider ist 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. 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:
Beachten Sie, dass Ihr x
-Wert jedoch möglicherweise nicht den erwarteten Wert in der nächsten Iteration enthält.
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%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.
Tags und Links excel-vba excel-2010