Ich schreibe einen Code in VBA, der jede Zeile für mehrere Spalten durchläuft und den Unterschied zwischen zwei Zeilen findet und diesen Wert in einem Array speichert. Ich habe eine if-Anweisung in der for-Schleife hinzugefügt, um zu vermeiden, dass leere Zellen in die Operation eingeschlossen werden, und sie funktioniert für die ersten fünf Spalten, aber nicht für die sechste.Bedingte Anweisung funktioniert nicht ordnungsgemäß in VBA Excel
Dim Datarray As Variant
Dim LR As Long, LR1 As Long
Dim p As Integer, i As Integer
LR1=LR-1
ReDim R(LR1) As Variant
For i = 1 To DateTime_Column
LR = Cells(Rows.Count, i).End(xlUp).Row
Datarray = Range(Cells(1, i), Cells(LR, i))
For p = 2 To LR1
If Datarray(p, 1) And Datarray(p + 1, 1) <> Empty Then
R(p) = Abs(Datarray(p + 1, 1) - Datarray(p, 1))
End If
Next p
Rave = WorksheetFunction.Average(R) ***Error occurs here because R is empty***
Next i
Hat jemand etwas falsch mit der Art, wie meine if-Anweisung geschrieben wird? Der Code scheint zu denken, dass die Zellen in der sechsten Spalte leer sind, wenn sie nicht sind. Ich habe das Datarray überprüft und jeder Spot hat Werte.
Sollten Sie nicht 'LR' und' LR1' * vor * der 'ReDim'-Anweisung berechnen? Gerade jetzt scheint es, dass "R" auf Null Elemente dimensioniert ist. Das Hinzufügen einer Option Explicit-Anweisung an den Anfang des Codes kann dem Compiler außerdem ermöglichen, zusätzliche Probleme zu kennzeichnen. – xidgel