Ich versuche, einen einfachen Zähler mit Doppel Kriterien einzurichten und ich hörte ich vonKann Laufzeitfehler 13 nicht Ursache finden
Laufzeitfehler 13
Wie Sie unten sehen, ich habe mehrere Zähler, alle als Ganzzahl und ich möchte, dass sie jeden Treffer zählen, der in Abhängigkeit von den Werten der Spalten D und A gesperrt ist. Falls es darauf ankommt: Der Text in Spalte D wird über Datumsvergleich in zwei anderen generiert Spalten, aber ist als Text formatiert).
Private Sub Workbook_Open()
Dim lr, i, k, a, b, c, d, e, f, g, h, j, l, m, n, o, p, q, r, s As Integer
a = b = c = d = e = f = g = h = j = l = m = n = o = p = q = r = 0
Worksheets("overdue").Activate
lr = Range("D" & Rows.Count).End(xlUp).Row
k = 1
For i = 1 To lr
If Cells(i, "D").Value = "OVERDUE" And Cells(i, "A") Like "*φίλτρου*" Then
a = a + 1
ElseIf Cells(i, "D").Value = "OVERDUE" And Cells(i, "A") Like "*Λιπαντικού*" Then
b = b + 1
k = k + 1
End If
Next i
Ich habe sogar versucht, die Arbeitsblatt-Namen direkt an der Zell-Syntax wie
If Worksheets("overdue").Cells(i, "D").Value = "OVERDUE" And Worksheets("overdue").Cells(i, "A") Like "*ößëôñïõ*" Then
zu verlagern, aber es scheint nicht zu helfen. Hat jemand einen Vorschlag? Ich habe vergessen hinzuzufügen, dass der Debugger die Zeile zeigt, wo das If beginnt, also die Anweisung für den ersten Zähler.
Auch ich sehe, dass, wenn ich den Code radikal und vereinfachen, es so weit wie möglich zu ändern, wie diese
Sub testcounter()
Dim cell As Range
Dim a As Integer
For Each cell In Worksheets("Sheet2").Range("D1:D3500")
If cell.Value = "1" Then
a = a + 1
End If
Next
MsgBox a
End Sub
Es ist immer noch die 13
gibt ausFehler
in der ersten Zeile der IF-Anweisung.
"Ich habe mehrere Zähler, die alle als Integer" - nur die letzte einer ganzen Zahl ist. Alle anderen sind Varianten. In VBA müssen Sie den Typ für jede angeben: Sie können eine durch Kommas getrennte Liste nicht verwenden. Und diese angekettete Aufgabe funktioniert nicht wie du denkst. –
OK, aber auch wenn ich die Deklaration zu Dim lr As Ganzzahl ändere, wie As Integer, k As Integer usw. Ich bekomme den gleichen Fehler – user36510
Ganzzahlen werden nicht wirklich in VBA verwendet. Sie beziehen sich auf 16-Bit-Integer für die Kompatibilität mit 16-Bit-Office. Die 32 Bit (und 64 Bit) Ganzzahl ist 32 Bit und wird in VBA als Long bezeichnet. Integer +/- 32K v ist eine lange +/- 2 Milliarden. – ACatInLove