将单元格范围传递给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