2016-07-31 41 views
0

我正在写一个函数,为我运行一些付款计算。我所做的是我喂食细胞的范围。传递单元格范围到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)并且它从这些单元计算我的工资。此功能工作正常,当我把它从子为这里看到:

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))从电子表格中调用它,我得到一个值误差

我已经找遍了所有网的解决方案过去,但我还没有发现任何,是有关我自己的情况。

这已经折腾我了一段时间,因为我是新来的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 
+1

从不显示以图像形式的代码。始终将其包含在问题文本的正文中。 – skkakkar

回答

1

我复制的错误并通过更换函数头的这一部分解决了它:

Optional other As Range = 0 

与此:

Optional other As Range = Nothing 
+0

您可能需要在更改后关闭并重新打开表单。点击“现在计算”没有重新运行我的代码 – Matt

+0

无后顾之忧!如果你能够“接受”我的答案,那么它会提高我的声誉(我是新来的,我需要它哈哈) – Matt

+0

完成:)你也介意解释为什么它没有工作从电子表格调用,但工作通过一个子? – neeenway

相关问题