簡體   English   中英

VBA 函數返回無值

[英]VBA Function Return no Value

我需要有關此功能的幫助。 此函數沒有返回值。

Function CalcComm(salesdate As Date, salesamount As Double) As Double

If sales_A < 10000 Then
Commission = salesamount * 0.03
ElseIf salesamount >= 10000 And salesamount < 25000 Then
Commission = salesamount * 0.04
ElseIf salesamount >= 25000 Then
Commission = salesamount * 0.06
Else: Commission = salesamount * 0.06
End If

If month(saledate) = 1 Or month(saledate) = 2 Or month(saledate) = 12 Then
Commission = salesamount * 0.015

End If
End Function

您沒有為函數分配要返回的值。 例如CalcComm = Commission

sales_A未聲明,我認為應該是salesamountsaledate是一個錯字,應該是salesdate 請在您的模塊頂部插入Option Explicit以強制執行變量聲明(並間接幫助您發現拼寫錯誤)。

您的代碼邏輯可以使用Select Case語句,以下代碼將返回:

  • 1、2、12月為1.5%;
  • 其他月份
    • < 10000為 3%;
    • 4% 為10000-25000和;
    • >= 25000及以上為 6%。
Option Explicit

Function CalcComm(salesdate As Date, salesamount As Double) As Double
    Dim Commission As Double
    
    Select Case Month(salesdate)
        Case 1, 2, 12: Commission = salesamount * 0.015
        Case Else
            Select Case salesamount
                Case Is < 10000: Commission = salesamount * 0.03
                Case Is < 25000: Commission = salesamount * 0.04
                Case Else: Commission = salesamount * 0.06
            End Select
    End Select
    
    CalcComm = Commission
End Function

除了不返回函數名中的值外,兩個 If 函數都包含錯誤:

  • sales_A 不是傳遞給函數的值
  • 銷售日期應該是銷售日期

計算佣金 ( UDF )

Option Explicit

Function CalcComm( _
    ByVal SalesDate As Date, _
    ByVal SalesAmount As Double) _
As Double
    
    Dim CommRate As Double
    
    Select Case SalesAmount
    Case Is < 10000
        CommRate = 0.03
    Case Is < 25000
        CommRate = 0.04
    Case Else
        CommRate = 0.06
    End Select
    
    Select Case Month(SalesDate)
    Case 1, 2, 12
        CommRate = CommRate + 0.015
    End Select
    
    CalcComm = SalesAmount * CommRate

End Function

暫無
暫無

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

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