2017-06-19 1 views
0

ich diesen folgenden Code in VBA geschrieben:VBA Fehler - Anwendungs ​​definiert pr Objekt definierte Fehler Bei Verwendung Wenn

Dim Counter As Long 
Dim Counter_Two As Long 
Dim Array_Column_Letter(3) As String 

Array_Column_Letter(0) = "A" 
Array_Column_Letter(1) = "B" 
Array_Column_Letter(2) = "C" 
Array_Column_Letter(0) = "D" 

For Counter = 0 To LastRow 
    For Counter_Two = 0 To 3 
    If Worksheets("Sheet1").Cells(Counter, Array_Column_Letter(Counter_Two)).Value = IsEmpty(True) Then 
     MsgBox ("Hi") 
    End If 
    Next Counter_Two 
Next Counter 

Aus irgendeinem Grund bin ich die folgende Fehlermeldung erhalten:

Application-defined pr Object-defined Error

VBA sagt, dass etwas mit der if-Anweisung falsch ist, die diesen Fehler verursacht. Ich kann nicht herausfinden, warum. Irgendwelche Ideen?

+0

benutzen, um Ihre 'für Counter = 0 To LastRow' geht von '0', so' Zellen (Zähler, Array_Column_Letter (Counter_Two)). Value' beginnt Zeile '0', was dazu führt, mit deinem Fehler. Sie können auch diese Zeile 'If IsEmpty (Worksheets (" Sheet1 ") schreiben. Zellen (Counter, Array_Column_Letter (Counter_Two)). Value) Then' –

+1

Nur eine allgemeine Frage - was glauben Sie, dass' IsEmpty (True) 'tut? – Vityata

+0

'IsEmpty (True)' wird immer falsch sein, also testen Sie im Grunde, ob der Inhalt der Zellen falsch ist. Wahrscheinlich nicht das, was du erreichen willst. –

Antwort

1

Ranges in Excel beginnen bei „A1“ nicht „A0“

Diese Linie

zu finden
If Worksheets("Sheet1").Cells(Counter, Array_Column_Letter(Counter_Two)).Value = IsEmpty(True) Then 

Sollte auf

If Worksheets("Sheet1").Cells(Counter + 1 , Array_Column_Letter(Counter_Two)).Value = IsEmpty(True) Then 

auch richtig verwenden isempty geändert werden Sie sollten es wie unten

If IsEmpty(Worksheets("Sheet1").Cells(Counter + 1 , Array_Column_Letter(Counter_Two)).Value) Then 
0

Sie diesen Fehler erhalten, weil Sie versuchen, Reihe 0. Ändern Sie den Startwert in der ersten For-Anweisung

Verwandte Themen