我已激活" sheet2"但即使这样,sum函数也会从" sheet1"中获取值。而不是" sheet2"。
Worksheets("sheet2").Activate
Sheets("sheet2").Cells(fl1, nf) = Application.WorksheetFunction.Sum(Range(Cells(fl1, locrng1.Column), Cells(fl1, (nf - 1))))
Sheets("sheet2").Cells(fl1, of) = Sheets("Sheet2").Cells(fl1, nf) * Sheets("Sheet2").Cells(fl1, firstlevel1.Offset(0, 1).Column)
Sheets("sheet2").Cells(fl1, rf) = Sheets("Sheet2").Cells(fl1, nf) * (1 - (Sheets("Sheet2").Cells(fl1, firstlevel1.Offset(0, 1).Column)))
答案 0 :(得分:2)
您应该使用With
语句了解它,它会为您节省大量的输入。
注意:您的代码中Set firstlevel1
范围在哪里?可能在您将Activate
与Worksheets("sheet2").Activate
一起使用之前。
请记住几乎没有任何理由使用Activate
,这只会减慢您的代码运行时间。
尝试以下代码:
With Worksheets("sheet2")
.Cells(fl1, nf) = Application.WorksheetFunction.Sum(.Range(.Cells(fl1, locrng1.Column), .Cells(fl1, (nf - 1))))
.Cells(fl1, of) = .Cells(fl1, nf) * .Cells(fl1, firstlevel1.Offset(0, 1).Column)
.Cells(fl1, rf) = .Cells(fl1, nf) * (1 - (.Cells(fl1, firstlevel1.Offset(0, 1).Column)))
End With