Страницы: 1
RSS
При копировнии избежать замены символа Ø на Æ.
 
Добрый день друзья.
Имеется таблица с текстовыми строками в которых иногда встречается символ Ø, диаметра.
Копирую данные строки в массив:
Код
Smeta = .Range("A1:K" & .Cells(.Rows.Count, "A").End(xlUp).Row).Value

А после обработки и выгрузки на лист он символ Ø диаметра меняет на Æ.

Подскажите пожалуйста не сложную функцию по поиску и замене символов в массиве макроса.
В массиве он отображается как знак ?.

Замену с символом я нашел:
Код
Symbol = ChrW(216)

Спасибо.
 
Цитата
Станислав Вьюжанин написал:
после обработки
Символ Ø в массиве строк VBA может превратиться в символ Æ только с творческой помощью программиста. :)

Редактор VBE не поддерживает юникод, соответственно, эти символы и показывает Вам как "?".
Владимир
 
Цитата
sokol92 написал:
только с творческой помощью программиста
а вот и нет - Æ превращается в диаметр в шрифте Symbol
Соблюдение правил форума не освобождает от модераторского произвола
 
Символ остается самим собой (посмотрите в строке формул или с помощью функции AscW). То, что указанный Вами шрифт отображает эти символы таким образом, так еще Козьма Прутков заметил ...
Изменено: sokol92 - 21.06.2019 13:06:02
Владимир
 
А как тогда символ "Ø", который в VBA отражается как "?", при вставке на лист заставить опять превращаться в "Ø"?
 
руками:
отметить символ и задать правильное название шрифта

с помощью VBA:
Cells(r,c).Characters(Start:=ПосчитайтеПозициюСимволаВЯчейкеRC, Length:=1).Font.Name = "Symbol"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Еще раз.
1. Если речь действительно идет о символе  Ø , то он в любом шрифте (кроме Symbol и т.п.) отображается нормально
2. Если речь все-таки идет о символе  Æ  , который Вы, благодаря шрифту Symbol, считаете символом диаметра, то нужно либо как указал Игорь в #6 отображать этот знак шрифтом Symbol, либо изменить на Ø, чтобы в дальнейшем не отслеживать шрифты (шрифт Symbol не использовать).
Замену можно выполнить макросом:
Код
Cells.Replace ChrW(198), ChrW(216)
Владимир
 
Речь идет о символе Æ,
 
Цитата
Ігор Гончаренко написал: отметить символ и задать правильное название шрифта
Не получается посчитать. В таблице из 5000 строк, в 1000 строках Æ не находится на одном и том же месте.
PP-R Ø15×2,2
Узел прохода Ø 100
Изменено: Станислав Вьюжанин - 21.06.2019 17:32:51
 
Файл-пример. Как есть - Как надо
Согласие есть продукт при полном непротивлении сторон
 
Упростил файл с проблемой
 
Цитата
sokol92 написал:
2. Если речь все-таки идет о символе   Æ   , который Вы, благодаря шрифту Symbol, считаете символом диаметра
Привет, Владимир.
Судя по файлу пример, вы абсолютно правы. Как раз 2 случай. Æ, но для него задан шрифт Symbol. :)  И стоило копья ломать.
Уж сколько раз ТС твердят, файл-пример, файл пример. Не все уникальные индивидуалисты, требующие особый подход.
 
Так нужно?
Код
For smn = smn To UBound(Smeta_new, 1)
                 Smeta_new(smn, 3) = Smeta(sm, 2) 
                 Smeta_new(smn, 3) = Replace(Smeta_new(smn, 3), ChrW(198), ChrW(216))
                 Smeta_new(smn, 7) = Smeta(sm, 3) 
                 smn = smn + 1
            Exit For

или                
Код
  Smeta_new(smn, 3) = Replace(Smeta(sm, 2), ChrW(198), ChrW(216))
Изменено: buchlotnik - 21.06.2019 17:03:13
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, я не понял как это работает. Но это работает. Спасибо большое.
Страницы: 1
Наверх