Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2009, 19:49   #1
Ohmu
Новичок
Джуниор
 
Регистрация: 29.12.2009
Сообщений: 4
По умолчанию Удаление редких символов в VBA

Добрый день!
Как в VBA удалит все ö, ü и прочие подобные символы в диапазоне?
Кодсимв присваивает им код 63, т.е. "?".
Спасибо.
Ohmu вне форума Ответить с цитированием
Старый 30.12.2009, 05:08   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Если требуется из всех ячеек активного листа удалить символ "?" (Chr(63)), то использовать функцию VBA "Replace" невозможно, т.к. при значении аргумента функции, предназначенного для замены, символ "?" воспринимается как любой одиночный символ (спец. символ маски). Поэтому, для решения Вашей задачи необходимо использовать любую подходящую функцию рабочего листа Excel (Application.WorksheetFunction). Например, так:
Код:
Sub Repl()
    Dim cell As Range: Application.ScreenUpdating = False
    For Each cell In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants)
        cell = Application.Substitute(cell, Chr(63), "")
    Next
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 30.12.2009, 10:40   #3
Ohmu
Новичок
Джуниор
 
Регистрация: 29.12.2009
Сообщений: 4
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Если требуется из всех ячеек активного листа удалить символ "?" (Chr(63)), то использовать функцию VBA "Replace" невозможно, т.к. при значении аргумента функции, предназначенного для замены, символ "?" воспринимается как любой одиночный символ (спец. символ маски). Поэтому, для решения Вашей задачи необходимо использовать любую подходящую функцию рабочего листа Excel (Application.WorksheetFunction). Например, так:
Код:
Sub Repl()
    Dim cell As Range: Application.ScreenUpdating = False
    For Each cell In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants)
        cell = Application.Substitute(cell, Chr(63), "")
    Next
End Sub
Из ячеек требуется удалить только символ ö
А для замены символа "?" можно использовать replace в виде "~?"
Ohmu вне форума Ответить с цитированием
Старый 30.12.2009, 10:43   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Прикрепите файл с примером и укажите, из каких ячеек какие символы требуется удалить. Тогда разберемся.
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 30.12.2009 в 10:54.
SAS888 вне форума Ответить с цитированием
Старый 30.12.2009, 12:09   #5
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

SAS888,
Сейчас проверил в VBA Excel 2010:
Replace("111?222","?","!") = "111!222"
да и с ö проблем у Replace нет
Replace("111" & ChrW(&H0F6) & "222",ChrW(&H0F6),"!") = "111!222"
Ohmu, для удаления используйте в качестве аргумента замены
vbNullString

Последний раз редактировалось Aent; 30.12.2009 в 12:12.
Aent вне форума Ответить с цитированием
Старый 30.12.2009, 13:39   #6
Ohmu
Новичок
Джуниор
 
Регистрация: 29.12.2009
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Aent Посмотреть сообщение
SAS888,
Сейчас проверил в VBA Excel 2010:
Replace("111?222","?","!") = "111!222"
да и с ö проблем у Replace нет
Replace("111" & ChrW(&H0F6) & "222",ChrW(&H0F6),"!") = "111!222"
Ohmu, для удаления используйте в качестве аргумента замены
vbNullString

Selection.Replace What:=ChrW(&HF6), Replacement:="" - так работает! Удаляется только ö.
Aent, подскажи, где можно посмотреть коды всех символов в таком же виде (ChrW(&HF6))
Ohmu вне форума Ответить с цитированием
Старый 30.12.2009, 15:58   #7
Ohmu
Новичок
Джуниор
 
Регистрация: 29.12.2009
Сообщений: 4
По умолчанию

Всем спасибо, проблему решил положительным образом.
Ohmu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление символов madagascar Помощь студентам 6 21.12.2009 16:55
Удаление символов в строке makc101 Помощь студентам 1 09.12.2009 23:01
Удаление символов в строке. papoose Общие вопросы C/C++ 8 03.06.2009 19:22
Удаление символов из ячейки gavrylyuk Microsoft Office Excel 2 26.08.2008 16:44
Удаление символов MURAD Общие вопросы C/C++ 3 19.08.2007 01:25