2016-08-05 39 views
0

benötigen in einem hinzufügen, wenn Aussage zu kontrollieren, was ich durch in meinem Code bin Looping so begonnen hat, mit dieser Zeile:Typenkonflikt, wenn definierten Bereich Work Anwendung

If Application.WorksheetFunction.Or(checkrange.value = 0, checkrange.value = "") = "False" Then 

I Checkrange als die folgenden

definiert habe

Mein Code stoppt auf der Arbeitsblattfunktion mit Laufzeitfehler 13, Typ Mismatch. Der Zweck der Anweisung war, zu überprüfen, ob der Bereich nur Nullen oder Leerzeichen enthält. Die Formel OR (A1: A5 = 0, A1: A5 = "") funktioniert gut in Excel, so nehme ich an, dass es meinen Bereich in seiner aktuellen Form nicht annimmt (Hinweis: Ich habe versucht, den .value aus checkrange.value aber zu entfernen das hat auch nicht funktioniert)

Jede Hilfe, wie immer, wird sehr geschätzt!

EDIT: Ich habe Dim checkrange As range es als Bereich ein WorksheetFunction im If statement sein

+0

Was Checkrange ist definiert als/set zu? –

+0

ah Entschuldigung, habe vergessen, das einzuschließen. Ich habe Dim checkrange Als Bereich – IIJHFII

+1

Sie können einen Mehrfachzellenbereich nicht mit einem Wert vergleichen, indem Sie den Operator '=' verwenden, wie Sie hier versuchen. Sie sollten stattdessen 'Worksheetfunction.Countif' verwenden. Außerdem sind Ihre 'Cells'-Referenzen nicht richtig mit einem Arbeitsblatt in Ihrer Bereichszuweisung qualifiziert. Früher oder später wird dir das ein Problem bereiten. – Rory

Antwort

1

Es besteht keine Notwendigkeit zu definieren, verwenden.

If checkrange.value = 0 Or checkrange.value = "" Then 

Weil Ihr ein Range kein Überprüfung Cell Sie hier CountA oder CountIf

verwenden haben, ist ein Beispiel für CountA:

If Application.WorksheetFunction.CountA(checkrange) = 0 Then 
+0

Danke für die Antwort, gerade versucht es aber immer noch Typ Mismatch:? – IIJHFII

+0

@IIJHFII siehe Update – DragonSamu

0

Ich denke, es sollte

If Application.WorksheetFunction.Or(checkrange.value = 0, checkrange.value = "") = False Then 

sein

tho Es ist nicht wirklich notwendig, die Arbeitsblattfunktion ODER hier zu verwenden. Probier mal und lass uns sehen was passiert.

+0

Danke für die Antwort, nur versucht es, aber immer noch Typ Mismatch:? – IIJHFII

0

Die Array-Formel OR(A1:A5 = 0,A1:A5 = "") prüft, ob eine beliebige (1 oder mehr) der Zellen im Bereich 0 oder "" sind. Um zu überprüfen, wenn eine der Zellen in dem Bereich sind nicht 0 oder „“, dann können Sie verwenden diese

If WorksheetFunction.CountIfs(checkrange, "<>0", checkrange, "<>") > 0 Then 
1

Sie müssen zwei separate COUNTIF Aussagen:

If Application.WorksheetFunction.Countif(checkrange, "0") + Application.WorksheetFunction.Countif(checkrange, "") = 0 Then