将一张纸生成的值放入新纸张中

时间:2016-01-28 18:03:14

标签: excel vba excel-vba

我有一个嵌套的for loop,它希望在一行中获取值,根据一个等式生成一个值,然后对第一个之后的许多行执行相同的操作,同时将值加在一起。

基本上,如果第一行的值为15,第二行和第三行的值为10和12,则存储总值(名为genCost)的变量将为37。

我想将genCost的总和值放在一个新的工作表中,以天为单位,但是当我运行代码时,我得到一个运行时1004错误。我意识到这与我正在处理的工作表和我试图将值放入的工作表(代码中的第2行到最后一行)有关。

我理解我的代码可能很简单,但是有人可以帮我解决这个问题吗?

'Nested For loop for ALL OTHER DAYS of genCost...only 1 formula
For j = 2 To dayNumber
    For i = 1 To increments

        'IF(AND(U7=1,U6=0),R7,0)
        If Cells(rowValue, 21) = 1 And Cells(rowValue - 1, 21) = 0 Then
            ifValue = Cells(rowValue, 18)
        Else
            ifValue = 0
        End If

        'calculate value variable with second half of equation
        value = (((Cells(rowValue, 23) * Cells(rowValue, 16) * (1 / 6)) + (Cells(rowValue, 25) * Cells(rowValue, 17) * (1 / 6)) + (Cells(rowValue, 21) * Cells(rowValue, 19) * (1 / 6)) + ifValue))
        genCost = genCost + value

        'set value and ifValue back to zero and step down one row and do again
        value = 0
        ifValue = 0
        rowValue = rowValue + 1

    Next i

Cells(3, j) = genCost
Dim genCostRefNum As Integer: genCostRefNum = 6
ThisWorkbook.Sheets(1).Range(Cells(genCostRefNum, 4)) = genCost
genCost = 0

Next j

1 个答案:

答案 0 :(得分:2)

而不是这个

ThisWorkbook.Sheets(1).Range(Cells(genCostRefNum, 4)) = genCost

写这个

ThisWorkbook.Sheets(1).Cells(genCostRefNum, 4) = genCost

Cells语句的默认属性为ValueRange相同)。所以你的代码完全是

ThisWorkbook.Sheets(1).Range(Cells(genCostRefNum, 4).Value).Value = genCost

并在执行Cells后执行以下操作:

ThisWorkbook.Sheets(1).Range(6).Value = genCost

总是编写完整的语句并且不依赖于默认属性是一种好习惯。