Я написал макрос для удаления специальных символов на листе на основе значений ascii, но проблема в том, что он заменяет содержимое ячейки. Например, p;j;h который должен стать p,j,h становится ,, (пропуская данные). Нужно ли включать какие-либо дополнительные операторы или как еще настроить свой код?

sub specialcharecters()

Dim i As Long

For i = 32 To 43
    Selection.Replace what:=Chr(i), replacement:=", ", LookAt:=xlPart, SearchOrder:= _
       xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Next i

     END sub

1 ответ1

2

Я прошел через ваш код, и кажется, что виновником является Chr(42) , что соответствует символу * . Когда Excel встречает это, он воспринимает это как шаблон и заменяет весь текст. Если вы добавляете простой оператор if, чтобы пропустить 42, он проходит первый цикл For не вызывая наблюдаемых проблем. Вам нужно будет сделать это снова для Chr(63) (?) или это даст странный вывод снова. Как только оба из них учтены, у меня все заработало.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .