Excel VBA Run-time error '13' Type mismatch
Ich ein makro erstellt für eine Datei und zuerst war es wunderbar funktioniert, aber heute habe ich schon öffnen und starten Sie die Datei-und makro-Hunderte Male und ich bin immer die folgende Fehlermeldung: Excel VBA Run-time error '13' Type mismatch
Ich nichts verändert habe, in der makro und weiß nicht, warum bin ich immer die Fehler. Außerdem es dauert eine Ewigkeit, bis das makro aktualisieren jedes mal, wenn ich es laufen (das makro laufen etwa 9000 Zeilen).
Der Fehler ist in der zwischen ** **.
VBA:
Sub k()
Dim x As Integer, i As Integer, a As Integer
Dim name As String
name = InputBox("Please insert the name of the sheet")
i = 1
Sheets(name).Cells(4, 58) = Sheets(name).Cells(4, 57)
x = Sheets(name).Cells(4, 57).Value
Do While Not IsEmpty(Sheets(name).Cells(i + 4, 57))
a = 0
If Sheets(name).Cells(4 + i, 57) <> x Then
If Sheets(name).Cells(4 + i, 57) <> 0 Then
If Sheets(name).Cells(4 + i, 57) = 3 Then
a = x
Sheets(name).Cells(4 + i, 58) = Sheets(name).Cells(4 + i, 57) - x
x = Cells(4 + i, 57) - x
End If
**Sheets(name).Cells(4 + i, 58) = Sheets(name).Cells(4 + i, 57) - a**
x = Sheets(name).Cells(4 + i, 57) - a
Else
Cells(4 + i, 58) = ""
End If
Else
Cells(4 + i, 58) = ""
End If
i = i + 1
Loop
End Sub
Glauben Sie, können Sie mir helfen? Ich verwende excel 2010 auf windows 7.
Vielen Dank
- Wahrscheinlich tun Sie eine if-Anweisung und vergleicht einen string mit doppelten Anführungszeichen. Verwenden
="3"
nicht= 3
Du musst angemeldet sein, um einen Kommentar abzugeben.
Würden Sie einen "type mismatch", wenn
Sheets(name).Cells(4 + i, 57)
enthält einen nicht-numerischen Wert. Sie sollten überprüfen Sie die Felder aus, bevor Sie annehmen, dass Sie Sie zahlen, und versuchen Sie, subtrahieren Sie von Ihnen.Auch die, die Sie aktivieren solltenOption Strict
so sind Sie gezwungen, explizit konvertieren Sie Ihre Variablen, bevor Sie versuchen, führen Sie Typ-abhängige Operationen auf Ihnen wie Subtraktion. Das wird Ihnen helfen, erkennen und beseitigen Sie Probleme in der Zukunft, auch.Leider
Option Strict
ist für VB.NET nur. Noch, Sie sollten look-up-best practices für die explizite Datentypkonvertierungen in VBA.Update:
Wenn Sie versuchen, gehen für die schnelle Lösung von deinem code, jedoch wickeln Sie die
**
Zeile und die folgende es in den folgenden Zustand:Beachten Sie, dass Ihre
x
Wert enthält möglicherweise nicht den erwarteten Wert in die nächste iteration, aber.If
- Anweisung, und dass Sie alle den Klammern.Option Strict
ist VB.NET, nicht VBA.Danke Jungs für all Eure Hilfe! Schließlich war ich in der Lage, damit es funktioniert tadellos, Dank einer Freundin und auch Sie!
Hier ist der Letzte code, also können Sie auch sehen, wie wir es lösen.
Nochmals vielen Dank!
Diogo
Justin hat Ihnen sehr schöne Tipps 🙂
Erhalten Sie auch, dass Fehler, wenn die Zelle, wo Sie werden die Durchführung der Berechnung ist ein Fehler, resultierend aus einer Formel.
Zum Beispiel, wenn Zelle A1 #DIV/0! Fehler, dann erhalten Sie "Excel VBA Run-time error '13' Type mismatch" bei der Durchführung dieser code
Ich gemacht habe, einige kleine änderungen an Ihrem code. Könnten Sie bitte testen für mich? Kopieren Sie den code mit Zeilennummern, wie ich bewusst haben Sie dort hingestellt.
Für zukünftige Leser:
Diese Funktion wurde abending in
Run-time error '13': Type mismatch
In meinem Fall wurde die Funktion Versagen, wenn es lief in einer
#DIV/0!
oderN/A
Wert.Um es zu lösen, ich hatte, dies zu tun:
Ich hatte das gleiche problem wie du erwähnt hier oben, und mein code war Prima gestern den ganzen Tag.
Hielt ich auf die Programmierung an diesem morgen, und als ich öffnete meine Bewerbung (meine Datei mit einem Auto_Open-sub), habe ich den Run-time error '13' Type mismatch", ich ging auf dem web, um Antworten zu finden, habe ich versucht, eine Menge Dinge, änderungen und irgendwann erinnerte ich mich daran, irgendwo gelesen über "Ghost" - Daten, die Aufenthalte in einer Zelle, auch wenn wir es nicht sehen.
Mein code, geht nur die übertragung von Daten aus einer Datei, die ich bisher geöffnet zu einem anderen und Summe es. Mein code blieb an der Dritten SheetTab (So ging es Recht für die 2 vorherigen SheetTab, wo der selbe code ging ohne zu stoppen) mit "Type mismatch" - Meldung. Und es macht jedes mal an der gleichen SheetTab, wenn ich neu starten mein code.
Also wählte ich die Zelle, wo Sie beendet wurde, manuell eingetragen 0,00 (Da die "Type mismatch" kommt aus einer Summierung Variablen deklariert DIM as Double) und kopiert diese Zelle in alle weiteren Zellen, in denen das gleiche problem aufgetreten. Es löste das problem. Nie hatte Sie die Nachricht erneut. Nichts mit meinem code, aber der "Geist" oder Daten aus der Vergangenheit. Es ist wie, wenn Sie wollen, verwenden Sie die Strg+Ende-und Excel bringt Sie, wo Sie hatte die Daten einmal und es gelöscht. Hatte auf "Speichern" und schließen Sie die Datei, wenn Sie wollten, verwenden Sie Strg+Ende, um sicherzustellen, dass Excel wies Sie auf die Rechte Zelle.
Dieser Fehler tritt auf, wenn die input-Variablen-Typ ist falsch. Vermutlich haben Sie geschrieben, eine Formel in
Cells(4 + i, 57)
dass anstelle der=0
die Formel= ""
verwendet haben. Also, wenn Sie dies ausführen, erscheint eine Fehlermeldung. Weil leere Zeichenfolge ist nicht gleich null.