VBA - Аргумент не является обязательным, я не понимаю, почему - PullRequest
0 голосов
/ 28 февраля 2019

Я делаю приложение для мини-пробега, используя 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 голосов
/ 28 февраля 2019
 Call allinone

allinone имеет параметры, но вы не передаете никаких аргументов при вызове.Отсюда и ошибка.

Вам нужно что-то вроде

 allinone milesValue, carTypeValue

(лучше избегать Call - это устарело и устарело)

Кроме того, вы можете отменитьпеременная miles внутри вашей подпрограммы, если у вас уже есть параметр с таким же именем.

0 голосов
/ 28 февраля 2019

Функция 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
0 голосов
/ 28 февраля 2019

Попробуйте объявить ваш другой массив

Dim miles as Integer, vat as Integer, total as Single
Dim cartype as Integer 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...