0

我有这个 Sub 计算从 CSV 文件中获取信息。

Private Sub getTotalAmt(intDuration As integer, strProgrameType As String)

我有另一个子:

Private Sub getMembershipDiscount(ByRef dtDOB As Date, dblTotalAmt as Double)

它计算客户的年龄并根据他们的年龄给他们折扣。所以要做到这一点,我必须从上面的 Sub ( getTotalAmt) 到这个 Sub 过程的总金额。

我的问题是,如何从该子程序中获得总金额?

4

2 回答 2

3

根据定义,子程序没有输出。
相反,您想编写一个函数。在您的情况下,将您必须的代码更改为如下所示:

private function getTotalAmt(intDuration As integer, strProgrameType As String) as double
     'do the same maths you do in the sub, and store your answer in a variable called "whatever" 
     getTotalAmt = whatever
end function

然后使用该功能:

sub IUseFunctions()
   dim myDiscount as double
   myDiscount = getTOtalAtm(1,"s")
end sub

在此示例中,我已为您确定折扣值存储在双精度类型数字中。您可以在 getTotalAmt 函数的第一行将其更改为您喜欢的任何内容。

于 2013-11-11T02:21:00.490 回答
2

请指定返回类型并将您的 Sub 转换为函数这样,如果您为getTotalAmt(int Duration As Integer, StrProgrameType As String)方法指定返回类型,您始终可以从函数返回某些内容,看起来像这样Function getTotalAmt(int Duration As Integer, StrProgrameType As String) As double

然后从另一种方法中,您可以调用它并使用它的重新调整值进行进一步计算或其他。

IE

Private Sub sub1() 

//You use the Sub2's value in here like 
msgbox(sub2) 

End Sub 

Private Function sub2() As String //You can specifiy any data type you are returning, I specified String just for demnostrate

//Set the value of Sub2 in here
 sub2 = "Yourvalue";

End Function
于 2013-11-11T02:13:53.563 回答