我的问题很难解释,因此我添加了一张图片,并通过我的谷歌硬盘分享了示例excel文件。
该功能应该做什么:在行中有不同的项目总价格" W"和行中总运价的运输成本百分比" Q" (对于不同的成本项目,存在几个其他百分比行,这只是为了简化)。 现在我将各个项目总计相加。
然后,我将以下功能应用于行中的所有百分比" Q"然后应该给我总成本,然后我可以再按行排除" W"获得总成本的百分比。 在我的示例文件中,所有子百分比都相等,但它们也可能不同。
当我有两张具有以下功能的纸张时,会遇到我遇到的问题。由于某些原因,每当功能在一张纸上更新(并显示正确的值)时,另一张纸上的功能就变得一团糟。然后当我在乱搞功能上手动更新("按下输入")时,它显示正确的值,但是当我回到上一张纸时,该功能在那里搞砸了...我是快要疯了 : ( 并且,如果我有第三张参考" Q"在每张纸上,我永远无法让它同时显示两张纸的正确值,其中一张始终不正确。
{{1}}
答案 0 :(得分:0)
如果没有合格的工作表对象,您的Range("W" & rCell.Row)
将始终引用ActiveSheet,而ActiveSheet并不总是调用您的函数。
以下是修复它的一种方法:
Option Explicit
Function SUMSubCost(rRange As Range) As Double
Application.Volatile
Dim Total, rCell As Range
For Each rCell In rRange
If (Not IsEmpty(rCell)) And (Not IsError(rCell)) Then
Total = Total + (rCell.Value * rCell.Worksheet.Range("W" & rCell.Row).Value)
End If
Next rCell
SUMSubCost = Total
End Function