2017-06-15 12 views
0

私は、このコードを使って何かを得るために様々な順列で遊んできました。 if文の前半は機能していますが、範囲の合計が0の場合、コードは目的の計算を実行していません。私は "タイプの不一致"エラーが発生しています。VBA - タイプの不一致 - コード?

どのような考えですか?

n = ActiveWorkbook.Sheets.Count 
For i = 2 To n 
    If Application.Sum(Sheets(i).Range("O13:O33")) > 0 Then 
    Range(Cells(13, i), Cells(19, i)).Value = Sheets(i).Range("P13:P19").Value 
    Else 
    Range(Cells(13, i), Cells(19, i)).Value = Sheets(i).Range("I13:I19") - (4 * Sheets(i).Range("K13:K19")) 
    End If 
Next i 

+0

マルチセル範囲では計算を行うことはできません。最初は基本的に配列を動かしていますが、範囲を順番に調べて、各セルの数値を1つずつ計算する必要があります。 –

+0

ありがとう@ScottCraner ... else文の後で、私は計算を実行するために何らかのループを試みるべきです。 – AdMac

+0

はい、下記の私の答えをご覧ください –

答えて

1

複数のセル範囲で数学を行うことはできません。

最初は基本的には配列を動かしていますが、範囲を順番に調べて各セルの数値を1つずつ計算する必要があります。

Dim Rng As Range 
n = ActiveWorkbook.Sheets.Count 
With ActiveSheet 
    For i = 2 To n 
     If Application.Sum(Sheets(i).Range("O13:O33")) > 0 Then 
      .Range(.Cells(13, i), .Cells(19, i)).Value = Sheets(i).Range("P13:P19").Value 
     Else 
      For Each Rng In .Range(.Cells(13, i), .Cells(19, i)) 
       Rng.Value = Sheets(i).Cells(Rng.Row, "I") - (4 * Sheets(i).Cells(Rng.Row, "K")) 
      Next Rng 
     End If 
    Next i 
End With 
関連する問題