VBA - 类型不匹配 - 代码?

时间:2017-06-15 17:06:53

标签: vba

我一直在尝试使用这些代码进行各种排列,试图让某些东西起作用。 if语句的前半部分正在运行,但是如果范围的总和为0,则代码不执行所需的计算。我得到了#34;类型不匹配"错误。

有什么想法吗?

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

最好的问候。

1 个答案:

答案 0 :(得分: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