Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Удаление символов при копировании из буфера в ячейку - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление символов при копировании из буфера в ячейку (Макросы/Sub)
Удаление символов при копировании из буфера в ячейку
squadgazzz Дата: Четверг, 05.06.2014, 14:52 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 0 ±
Замечаний: 80% ±

Excel 2010
ДОбрый день!

В ячейки из буфера вставляю тексты, что и где нужно сделать, чтобы в ячейку не лезли символы ;:!()*? и тп??? точки и запятые должны остаться.
То есть, если я копирую и вставляю в ячейку текст в виде "Привет;как_дела?", то в ячейку вставляется "Привет как дела"

это реально сделать?
 
Ответить
СообщениеДОбрый день!

В ячейки из буфера вставляю тексты, что и где нужно сделать, чтобы в ячейку не лезли символы ;:!()*? и тп??? точки и запятые должны остаться.
То есть, если я копирую и вставляю в ячейку текст в виде "Привет;как_дела?", то в ячейку вставляется "Привет как дела"

это реально сделать?

Автор - squadgazzz
Дата добавления - 05.06.2014 в 14:52
Rioran Дата: Суббота, 07.06.2014, 23:35 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
squadgazzz, здравствуйте.

Следующий макрос работает при вставке значений только в одну ячейку. Сам макрос должен находится не в модуле, а в листе. Работает только с этими символами и заменяет их на пробелы:

символы ;:!()*?

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next

Application.ScreenUpdating = False

Dim X As String

If Selection.Value = "" Then Exit Sub

X = Selection.Value

X = Replace(X, "*", " ")
X = Replace(X, ";", " ")
X = Replace(X, ":", " ")
X = Replace(X, "!", " ")
X = Replace(X, "(", " ")
X = Replace(X, ")", " ")
X = Replace(X, "?", " ")

Selection.Value = X

Application.ScreenUpdating = True

End Sub
[/vba]
К сообщению приложен файл: Whoopers.xlsm (13.3 Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Суббота, 07.06.2014, 23:35
 
Ответить
Сообщениеsquadgazzz, здравствуйте.

Следующий макрос работает при вставке значений только в одну ячейку. Сам макрос должен находится не в модуле, а в листе. Работает только с этими символами и заменяет их на пробелы:

символы ;:!()*?

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next

Application.ScreenUpdating = False

Dim X As String

If Selection.Value = "" Then Exit Sub

X = Selection.Value

X = Replace(X, "*", " ")
X = Replace(X, ";", " ")
X = Replace(X, ":", " ")
X = Replace(X, "!", " ")
X = Replace(X, "(", " ")
X = Replace(X, ")", " ")
X = Replace(X, "?", " ")

Selection.Value = X

Application.ScreenUpdating = True

End Sub
[/vba]

Автор - Rioran
Дата добавления - 07.06.2014 в 23:35
RAN Дата: Суббота, 07.06.2014, 23:40 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Суббота, 07.06.2014, 23:44
 
Ответить
Сообщениеhttp://forum.msexcel.ru/index.php/topic,10247.0.html
Ответы были даны.

Автор - RAN
Дата добавления - 07.06.2014 в 23:40
Rioran Дата: Воскресенье, 08.06.2014, 00:25 | Сообщение № 4
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
RAN, спасибо за информацию.

Пользователям просьба сообщать, если вопрос уже где-то рассматривается. Не круто изобретать велосипед, если в нём нет необходимости.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеRAN, спасибо за информацию.

Пользователям просьба сообщать, если вопрос уже где-то рассматривается. Не круто изобретать велосипед, если в нём нет необходимости.

Автор - Rioran
Дата добавления - 08.06.2014 в 00:25
SkyPro Дата: Воскресенье, 08.06.2014, 01:24 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
На регулярках:
[vba]
Код
Function replacePunctuations$(ByVal txt$, Optional delim$ = " ")
     Dim regex As Object
     Set regex = CreateObject("vbscript.regexp")
         With regex
             .Global = True
             .IgnoreCase = True
             .MultiLine = True
             .Pattern = "([\.,;:'=+_\-\!\?\&\(\)])"
         End With
     replacePunctuations = regex.Replace(txt, delim)
     Set regex = Nothing
End Function

Sub использование()
MsgBox replacePunctuations("Привет;как_дела?") ' можно указать со своим разделителем: replacePunctuations("Привет;как_дела?", "свой разделитель")
End Sub
[/vba]


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Воскресенье, 08.06.2014, 01:25
 
Ответить
СообщениеНа регулярках:
[vba]
Код
Function replacePunctuations$(ByVal txt$, Optional delim$ = " ")
     Dim regex As Object
     Set regex = CreateObject("vbscript.regexp")
         With regex
             .Global = True
             .IgnoreCase = True
             .MultiLine = True
             .Pattern = "([\.,;:'=+_\-\!\?\&\(\)])"
         End With
     replacePunctuations = regex.Replace(txt, delim)
     Set regex = Nothing
End Function

Sub использование()
MsgBox replacePunctuations("Привет;как_дела?") ' можно указать со своим разделителем: replacePunctuations("Привет;как_дела?", "свой разделитель")
End Sub
[/vba]

Автор - SkyPro
Дата добавления - 08.06.2014 в 01:24
Rioran Дата: Воскресенье, 08.06.2014, 01:32 | Сообщение № 6
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
На регулярках:

SkyPro, привет. Что такое регулярки?


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Воскресенье, 08.06.2014, 01:32
 
Ответить
Сообщение
На регулярках:

SkyPro, привет. Что такое регулярки?

Автор - Rioran
Дата добавления - 08.06.2014 в 01:32
SkyPro Дата: Воскресенье, 08.06.2014, 01:37 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Rioran, CreateObject("vbscript.regexp")
http://msdn.microsoft.com/ru-ru/library/az24scfc(v=vs.110).aspx

[offtop]вторая ссылка никак не хотела в тег залезать :)


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Воскресенье, 08.06.2014, 01:42
 
Ответить
СообщениеRioran, CreateObject("vbscript.regexp")
http://msdn.microsoft.com/ru-ru/library/az24scfc(v=vs.110).aspx

[offtop]вторая ссылка никак не хотела в тег залезать :)

Автор - SkyPro
Дата добавления - 08.06.2014 в 01:37
Pelena Дата: Воскресенье, 08.06.2014, 01:44 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 19197
Репутация: 4423 ±
Замечаний: ±

Excel 365 & Mac Excel
Тема Поговорим про RegExp входит в пятёрку самых обсуждаемых на форуме :)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеТема Поговорим про RegExp входит в пятёрку самых обсуждаемых на форуме :)

Автор - Pelena
Дата добавления - 08.06.2014 в 01:44
Rioran Дата: Воскресенье, 08.06.2014, 01:56 | Сообщение № 9
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
SkyPro, Pelena, thanks, that seems important. Регулярки выглядят компактнее моего варианта и точно выиграют, будь символов на проверку раза в два больше.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеSkyPro, Pelena, thanks, that seems important. Регулярки выглядят компактнее моего варианта и точно выиграют, будь символов на проверку раза в два больше.

Автор - Rioran
Дата добавления - 08.06.2014 в 01:56
Hugo Дата: Воскресенье, 08.06.2014, 04:31 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Но говорят регулярки не очень быстрые... Но это можно померить, если скорость начинает напрягать.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеНо говорят регулярки не очень быстрые... Но это можно померить, если скорость начинает напрягать.

Автор - Hugo
Дата добавления - 08.06.2014 в 04:31
ikki Дата: Воскресенье, 08.06.2014, 06:48 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
внутри символьного класса экранирование спецсимволов не требуется.
единственное "но" - минус должен быть либо в начале, либо в конце класса, иначе он играет другую роль.
кроме того, в данной конкретной теме было условие:
точки и запятые должны остаться

да и внешние скобки здесь только замедляют работу, создавая ненужные сабматчи.
а вот то, что ищется каждый раз по одному символу - не совсем гуд, ибо дольше.
с учетом этого шаблон может быть такой:
[vba]
Код
.Pattern = "[-;:'=+_!?&()]+"
[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Воскресенье, 08.06.2014, 07:27
 
Ответить
Сообщениевнутри символьного класса экранирование спецсимволов не требуется.
единственное "но" - минус должен быть либо в начале, либо в конце класса, иначе он играет другую роль.
кроме того, в данной конкретной теме было условие:
точки и запятые должны остаться

да и внешние скобки здесь только замедляют работу, создавая ненужные сабматчи.
а вот то, что ищется каждый раз по одному символу - не совсем гуд, ибо дольше.
с учетом этого шаблон может быть такой:
[vba]
Код
.Pattern = "[-;:'=+_!?&()]+"
[/vba]

Автор - ikki
Дата добавления - 08.06.2014 в 06:48
ikki Дата: Воскресенье, 08.06.2014, 07:23 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
вторая ссылка никак не хотела в тег залезать
видимо, чувствовала неладное :)
Цитата
.NET Framework 4.5
к сожалению, эти регулярки - не совсем те, что по первой ссылке.
хотя у них и больше возможностей. :(

но, если Вы сами придумаете или найдёте ссылочку, как их затащить в VBA - поделитесь, плиз.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
вторая ссылка никак не хотела в тег залезать
видимо, чувствовала неладное :)
Цитата
.NET Framework 4.5
к сожалению, эти регулярки - не совсем те, что по первой ссылке.
хотя у них и больше возможностей. :(

но, если Вы сами придумаете или найдёте ссылочку, как их затащить в VBA - поделитесь, плиз.

Автор - ikki
Дата добавления - 08.06.2014 в 07:23
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление символов при копировании из буфера в ячейку (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!