VBA передают переменные между Sub и Public Function - PullRequest
0 голосов
/ 09 ноября 2018

Я новичок в VBA и пытаюсь передать строку из Sub в публичную функцию (Sub и Public Function находятся в отдельных модулях, но в одной и той же книге), разделить строку на массив в публичной функции, затем передайте массив обратно в Sub из публичной функции.

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

Ошибка времени выполнения '9': Индекс вне диапазона

Любая помощь будет оценена. Извиняюсь за основной вопрос. Спасибо.

Sub:

Sub export()
Dim testString As String
Dim testValue As Variant

'testString could have any number of values
testString = "TEST1, TEST2, TEST3, TEST4"

'Call the Public Function below
testValue = splitText(testValue)

End Sub

которая вызывает следующую публичную функцию в другом модуле:

Public Function splitText() As Variant
Dim testValue As Variant

'Trying to import testString from the Sub to split it
testValue = Split(testString, ",")

'Define result of the Public Function
splitText = testValue

End Function

1 Ответ

0 голосов
/ 09 ноября 2018

Вам нужно использовать непротиворечивые имена переменных и передавать аргумент в вызове функции

Public Sub export()

    Dim testString As String
    Dim testValue As Variant

    testString = "TEST1, TEST2, TEST3, TEST4"

    testValue = splitText(testString) '<== consistent naming and passed as argument 

End Sub

Public Function splitText(ByVal testString As String) As Variant '<== argument referenced in function signature
    Dim testValue As Variant

    testValue = Split(testString, ",") '<== consistent naming 

    splitText = testValue

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