簡體   English   中英

將單元格范圍通過子傳遞給VBA功能,但不能在電子表格上傳遞

[英]Passing cell ranges to VBA function working via sub but not on spreadsheet

我正在編寫一個為我運行一些付款計算的函數。 我要做的是輸入單元格區域。

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))我收到了VALUE錯誤。

我在網上搜索了一個解決方案,但沒有找到與我自己的情況有關的任何解決方案。

一段時間以來,這使我感到沮喪,因為我是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

我復制了錯誤並通過替換函數標頭的這一部分來解決了該錯誤:

Optional other As Range = 0

有了這個:

Optional other As Range = Nothing

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM