Я застрял в очень простой проблеме. У меня есть следующая строка:Обработка строк VBA
Dim s as String
s = "031, 603-604, 803-804, 617, 817, 619, 819, 621, 821, 627, 827, 629, 829, 831, 645-646, 845-846, 647-648, 847-848, 649-650, 849-850, 667-668, 867-868, 671-672, 871-872, 677-678, 675-676, 875-876, 679-680"
Теперь я хочу, чтобы отделить коды в массив, так что у меня есть цикл Собирается полукокса по полукокса (concatting вверх), если символ является либо «» или „-“ , верните код и сбросьте удержание.
For i = 1 To Len(s)
If Not ((Mid(s, i, 1) = ",") Or (Mid(s, i, 1) = " ") Or (Mid(s, i, 1) = "-")) Then
code = code & Mid(s, i, 1)
ElseIf (Mid(s, i, 1) = ",") Or (Mid(s, i, 1) = "-") Then
Debug.Print code
code = ""
End If
Next i
Вместо того, чтобы 031, 603, 604 ... Я получаю 031, 603-604 ... В основном петля игнорирует (Mid(s, i, 1) = "-")
часть, но принимает (Mid(s, i, 1) = ",")
как условие для сброса значения кода.
Большое спасибо, что имеет смысл. Как я могу создать функцию для этой конкретной задачи (которая возвращает массив)? Открытый код функции (s как String) как String; s = Заменить (заменить (s, "-", ","), "", ""); code = Split (s, ","); Конечная функция; Это возвращает ошибку Compile Error: Ожидаемый массив, когда я пытаюсь запустить его как tmpArr = code (s). Я понимаю, что означает ошибка, но я не понимаю, как ее исправить. Я предполагаю, что это связано с объявлением самой функции. – emihir0
Что такое код? Почему вы используете код (ы) и назначаете его tmpArr? Было бы здорово, если бы вы могли открыть ** новый поток **, поскольку код в комментарии очень сбивает с толку, и неясно, что вы намереваетесь сделать. – PaulFrancis