将单元格范围传递给VBA函数,但不通过电子表格工作

我正在写一个函数,为我运行一些付款计算。 我所做的是我喂食的细胞范围。

Function clinkmeup(Tuesdays As Excel.Range, Sundays As Excel.Range, Subbing As Excel.Range, Optional Other As Exce.Range = 0) As Variant 

例如Payment(A10:A12, B12:B14, C13:C17) ,并计算这些单元的工资。 这个function正常工作时,我从这里看到一个子调用它:

 Sub lmao() money = clinkmeup(Worksheets("Talent").Range("C9:C10"), Worksheets("Talent").Range("F9:F11", Worksheets("Talent").Range("H9:H12")) MsgBox (money) End Sub 

但是,当我试图从电子表格中调用它(通过写=clinkmeup(C9:C10, F9:F11, H9:H12))我得到一个VALUE错误。

我在网上search了一个解决办法,但是我没有发现与我自己的案子有关的任何东西。

这让我很沮丧,因为我是VBA的新手,任何帮助都将不胜感激。

以下是我的整个代码:

  Function clinkmeup(Tuesdays As Excel.Range, Sundays As Excel.Range, Subbing As Excel.Range, Optional Other As Excel.Range = 0) As Variant Dim teaching As Double Dim admin As Double Dim seminar As Double Dim elem As Variant Dim sumo1 As Double teaching = Worksheets("Talent").Range("Teacrate") admin = Worksheets("Talent").Range("Admrate") seminar = Worksheets("Talent").Range("Semrate") sum1 = 0 For Each elem In Tuesdays sum1 = sum1 + elem Next elem For Each elem In Sundays sum1 = sum1 + elem Next elem For Each elem In Subbing sum1 = sum1 + elem Next elem sum1 = (sum1/ 60) * teaching sum2 = 0 If Not Other Is Nothing Then For Each elem In Other If elem.Offset(0, 1) = "S" Then sum2 = (elem / 60) * seminar + sum2 Else sum2 = (elem / 60) * admin + sum2 End If Next elem End If clinkmeup = sum1 + su2 End Function 

我复制了错误,并通过replace这部分函数头来解决它:

 Optional other As Range = 0 

有了这个:

 Optional other As Range = Nothing