Как передать массив в подпрограмму - PullRequest
1 голос
/ 21 июня 2020

Использование Excel в Office 365 на Windows 10.

Я пытаюсь передать массив в подпрограмму, но продолжаю получать ошибки компиляции

Sub PassArrTest(a(6) As Integer) ' This line here gives Compile error:  Expected: ) Error comes up as I'm typing
    
   MsgBox (a(3))
End Sub    

Sub Macro1()
'
' Macro1 Macro
'
Dim a(6) As Integer
Dim i As Integer
For i = 0 To 5
    a(i) = i + 1
Next i

PassArrTest (a)



End Sub

Если мне нравится это: -

Sub PassArrTest(a() As Integer) ' a declared as a dynamic array
    MsgBox (a(3))
End Sub



Sub Macro1()
'
' Macro1 Macro
'
Dim a(6) As Integer
Dim i As Integer
For i = 0 To 5
    a(i) = i + 1
Next i

PassArrTest (a)



End Sub

Я не получаю ошибки компиляции при вводе кода, но при попытке запустить я получаю «ошибка компиляции. Несоответствие типа: ожидается массив или определяемый пользователем тип»

Можно ли передавать массивы в подпрограмму в VBA, и если да, то каков правильный синтаксис?

1 Ответ

2 голосов
/ 21 июня 2020

Попробуйте, пожалуйста:

Sub PassArrTest(a() As Integer) ' a declared as a dynamic array
    MsgBox a(3)
End Sub

Sub Macro1()
 Dim a(6) As Integer, i As Integer

 For i = 0 To 5
    a(i) = i + 1
 Next i

 PassArrTest a()
 MsgBox passArrBis(a())
End Sub

Function passArrBis(a() As Integer) As Boolean
    If a(3) > 4 Then
        passArrBis = True
    Else
        passArrBis = False
    End If
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...