【发布时间】:2021-01-13 03:07:46
【问题描述】:
我在 vba 中创建了一个用户定义的函数来根据先进先出库存系统计算利润。在转到实际代码之前,我想检查一下天气输入是否有效。
'---------------Check Information for errors----------------------
SellSum = Application.WorksheetFunction.Sum(SellQuantity)
BuySum = Application.WorksheetFunction.Sum(BuyQuantity)
SellPCount = Application.WorksheetFunction.Count(SellPrice)
SellQCount = Application.WorksheetFunction.Count(SellQuantity)
BuyPCount = Application.WorksheetFunction.Count(BuyPrice)
BuyQCount = Application.WorksheetFunction.Count(BuyQuantity)
If SellSum > BuySum Then 'More sales than inventory, throw error
FIFO_PROFIT = VBA.CVErr(XlCVError.xlErrValue)
End If
If (BuyPCount <> BuyQCount Or SellPCount <> SellQCount) Then 'Incomplete data, throw error
FIFO_PROFIT = VBA.CVErr(XlCVError.xlErrValue)
End If
'-----------------------------------------------------------------
而在真正的代码之后,我就有了最终的价值,
FIFO_PROFIT = RunningProfit
但是,当我输入无效数据时,应该会引发错误,但它什么也没做。就像它只是跳过错误检查并跳转到实际代码。
实际代码有点长,我不相信它与它有任何关系。但如果有人想评论它, https://pastebin.com/fA2pY52f
【问题讨论】:
-
是我还是你最后覆盖了 FIFO_PROFIT 值?如果您覆盖它,它不会作为错误出现,对吗?在这种情况下,只需在每个 If 语句中添加一个
GoTo来检查错误并将代码改写到函数的末尾。 -
@EvilBlueMonkey,是的,你是对的,我正在覆盖,因为我认为这是唯一可行的方法。让我检查您的解决方案,如果它有效与否,请与您联系。 +1 快速响应
-
@EvilBlueMonkey,这将如何运作? if(condition) goto End Function ????
-
rtfm ,当光标在你不知道的方法上时按 F1 键访问(CVErr),但你可以Raise 一个真正的错误!并使用Option Explicit!
标签: excel vba excel-2007