Цикл VBA для замены всех символов в строке и записи результата в одну ячейку (Excel) - PullRequest
0 голосов
/ 26 января 2011

То, что я пытаюсь сделать, это взять вставленный пользователем текст из ячейки и преобразовать его в азбуку Морзе, а затем записать результат в другую ячейку.Я не могу понять, как записать результат, так как мой текущий код сохраняет только последний символ в массиве кода Морзе, который был изменен в выходной строке (если он существует во входной строке).

mколичество символов в обоих массивах.

For i = 1 To m
    output = Replace(input, A$(i), B$(i))
Next i
Range("output") = output

Ответы [ 2 ]

1 голос
/ 26 января 2011

Это потому, что вам нужно передать вывод после первой итерации для замены, а не неизмененный ввод снова и снова.

Не проверено, просто чтобы дать вам подсказку:

Dim strPuffer As String
strPuffer = Replace(input, A$(1), B$(1))
For i = 2 To m
    strPuffer = Replace(strPuffer, A$(i), B$(i))
Next i
Range("output") = strPuffer
1 голос
/ 26 января 2011

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

For i = 1 To m
    output = output & Replace(input, A$(i), B$(i))
Next i
Range("output") = input

Обратите внимание на добавленный output &, который говорит ему добавлять новое значение в вывод, а не перезаписывать его.

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