2016-07-20 6 views
1

VBAには、いくつかの列のすべての行をループし、2行ごとの違いを見つけてその値を配列に格納するコードを記述しています。空のセルが操作に含まれないようにするためにforループにifステートメントを追加しました。これは最初の5つの列では機能しますが、6番目の列では機能しません。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 

誰かが私のif文が書き込まれる方法に間違いを見ますか?このコードは、第6列のセルが空でないときには空であると考えるようです。私はDatarrayをチェックし、すべてのスポットに値が入っています。

+0

'ReDim'文の前に' LR'と 'LR1' *を計算するべきではありませんか?今、「R」はゼロ要素にディメンションされているように見えます。また、 'Option Explicit'ステートメントをコードの先頭に追加すると、コンパイラは追加の問題にフラグを立てることができます。 – xidgel

答えて

1

Ifステートメントが間違っています。

If Datarray(p, 1) <> Empty And Datarray(p + 1, 1) <> Empty 
関連する問題