VBA-参数不是可选的,我不明白为什么

时间:2019-02-28 17:07:39

标签: excel vba

我正在使用VBA制作迷你里程应用程序,我想我快要完成了,尽管我不明白这意味着“参数不是可选的”。

当我按下按钮时出现错误:

  

编译错误:参数不可选

第3页

Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then Range("E6").Value = 0.23
End Sub

Sub CommandButton1_Click()
Call allinone
End Sub

Private Sub OptionButton1_Click()
If OptionButton1.Value = True Then Range("D5").Value = 0.35

End Sub

Private Sub OptionButton2_Click()
If OptionButton2.Value = True Then Range("F5").Value = 0.15

End Sub

Private Sub TextBox1_Change()

End Sub

模块

Function allinone(miles As Integer, cartype As Integer) As Single
Dim miles As Integer, vat As Integer, total As Single


    Const owncar_rate = 0.35
    Const cocar_rate = 0.15
    Const vatrate = 0.23
    Dim mileage As Single, vat As Single

    If Range("E2") = 1 Then
        mileage = Range("D5") * Range("E7")
    Else
        mileage = Range("F5") * Range("E7")
    End If
    If Range("E7") = 1 Then
        vat = Range("E6") * Range("E7")
    Else
        vat = 0
    End If
    Range("D10").Value = miles
    Range("D11").Value = vat
    Range("D12").Value = total
    allinone = mileage + vat

End Function

3 个答案:

答案 0 :(得分:2)

 Call allinone

allinone具有参数,但是调用时没有传递任何参数。因此是错误。

您需要的是类似的东西

 allinone milesValue, carTypeValue

(最好避免使用Call-它已过时和过时了)

此外,如果您已经有一个具有相同名称的参数,则可以在子对象中删除变量miles

答案 1 :(得分:1)

函数allinone带有2个参数:

Function allinone(miles As Integer, cartype As Integer) As Single

在这里不带任何参数地调用它:

Sub CommandButton1_Click()
    Call allinone
End Sub

因此,有一个错误。为避免该错误,请在调用时添加一些参数:

Sub CommandButton1_Click()
    allinone 2, 4
End Sub

答案 2 :(得分:0)

尝试声明您的其他数组

Dim miles as Integer, vat as Integer, total as Single
Dim cartype as Integer