Страницы: 1
RSS
Как подставить восклицательный знак перед заглавной буквой?
 
Здравствуйте, Уважаемые!
Изначально стоял вопрос, как добавить "!" перед заглавной буквой каждого слова.
Причем заглавная буква может быть и в середине этого слова, но "!" все равно должен ставиться перед Заглавной буквой
Нашел здесь хороший макрос, чуть переделал и получил почти то. что надо.
Одна беда:
Если это АББРЕВИАТУРА, то получается !А!Б!Б!Р!Е!В!И!А!Т!У!Р!А
А у меня как раз все аббревиатуры.
Как можно избежать этой беды, дописать или исправить макрос?
Всем заранее спасибо.
Пример прилагаю.
 
В самом файле макроса нет. Файл я вставил, чтобы показать для какого листа работает макрос. Результат вставляется в столбец "C".
Макрос
 
Karataev, спасибо Вам большое.
Всё работает так. как я и просил.
С уважением,
 
UDF

Код
Function accent(ByVal intext As Variant) As Variant
Dim xx As Long, parts() As Variant, indexes() As Variant, count As Long, _
regex As Object, RegMatchCollection As Object, RegMatch As Object
Set regex = CreateObject("VBScript.RegExp")
With regex
.Global = True
.IgnoreCase = False
.Pattern = "[A-ZА-ЯЁ]+"
End With
Set RegMatchCollection = regex.Execute(intext.Value)
For Each RegMatch In RegMatchCollection
ReDim Preserve parts(count)
ReDim Preserve indexes(count)
parts(count) = RegMatch
indexes(count) = RegMatch.Firstindex + 1
count = count + 1
Next
For xx = 0 To UBound(parts)
intext = Left(intext, indexes(xx) - 1) & Replace(intext, parts(xx), "!" & parts(xx), indexes(xx), 1)
Next xx
accent = intext
End Function
Изменено: AB1 - 14.04.2018 15:49:36
 
Название темы для модераторов: как подставить восклицательный знак перед заглавной буквой.
Иначе мой макрос вообще не имеет никакого отношения к дубликатам.
 
вариант функции в столбце C
Код
 Function aaa$(t$)
   With CreateObject("VBScript.RegExp"): .Pattern = "[А-ЯЁ]\S+": .Global = True
     aaa = .Replace(t, "!$&")
  End With
End Function
Изменено: кузя1972 - 14.04.2018 15:58:40
 
СПАСИБО ВСЕМ!
Функции тоже будут очень полезны для использования!
А так же для саморазвития!
Страницы: 1
Наверх