Невозможно передать аргумент в вызов функции внутри цикла - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть цикл for, который вызывает внешнюю функцию, используя несколько параметров. Всякий раз, когда я добавляю итератор к определению функции и где функция вызывается, я получаю сообщение об ошибке Compile Error: ByRef argument type mismatch

Вот соответствующий код. Я вычеркнул несколько строк, но ты понял суть:

Function copy_from_datatable(tool_sel As String, _
                             date_total As Integer, _
                             tool_num As Integer _
                             )
    MsgBox "In function, tool_num = " & tool_num


End Function

Sub Program()

    For tool_num = 1 To total_sites

        If tool_sel = "Badging" Then
            MsgBox "vartype " & VarType(tool_num)
            Call copy_from_datatable(tool_sel, _
                                             date_total, _
                                             tool_num _
                                             )
        End If
    Next tool_num 
End Sub

Что-то не так с тем, как tool_num используется в вызове функции, определении функции или в цикле? Если я удаляю tool_num из всего, этот скрипт работает нормально

1 Ответ

4 голосов
/ 29 апреля 2019

Просто объявите ваши переменные в Sub Program(), и это будет работать:

Function copy_from_datatable(tool_sel As String, _
                             date_total As Integer, _
                             tool_num As Integer _
                             )
    MsgBox "In function, tool_num = " & tool_num
End Function


Sub Program()
    Dim tool_sel As String
    Dim date_total As Integer
    Dim tool_num As Integer

    For tool_num = 1 To total_sites

        If tool_sel = "Badging" Then
            MsgBox "vartype " & VarType(tool_num)
            Call copy_from_datatable(tool_sel, _
                                             date_total, _
                                             tool_num _
                                             )
        End If
    Next tool_num
End Sub

Я предлагаю вам использовать Option Explicit в каждом Module, чтобы избежать ошибок такого рода.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...