Здравствуйте, форумчане. Потребовалось создать пользовательскую функцию поиска и замены слов. Дело в том, что большинство решений, которые нашлись тут, оформлены в виде макроса, который работает по нажатию кнопки, а в данном случае нужна функция, которую можно вписать в формулу. Где-то находил похожую вещь, и использую сейчас ее, но она работает лишь частично, т.е., находит и заменяет слова идущие только в начале строки, а остальные игнорирует.
Можно ли здесь что-то изменить так, чтобы он находил слова и в середине строки и получалось, например, "ул Ленина, к. 1, оф 1" = "ул. Ленина, корп. 1, оф. 1". С данным кодом получается "ул. Ленина, к. 1, оф 1". Никак не могу сообразить=\.
Заранее спасибо!
P.S. Быть может, можно было оформить это каким-то другим способом, но я пока совсем профан в vba.
Можно ли здесь что-то изменить так, чтобы он находил слова и в середине строки и получалось, например, "ул Ленина, к. 1, оф 1" = "ул. Ленина, корп. 1, оф. 1". С данным кодом получается "ул. Ленина, к. 1, оф 1". Никак не могу сообразить=\.
Заранее спасибо!
P.S. Быть может, можно было оформить это каким-то другим способом, но я пока совсем профан в vba.
Код |
---|
Function GetAbbr(ByVal Source As String) As String 'функция сокращения Source = Trim(Source) If Source Like "село *" Then GetAbbr = "с." & Mid(Source, 5) ElseIf Source Like "поселок *" Then GetAbbr = "пос." & Mid(Source, 8) ElseIf Source Like "г *" Then GetAbbr = "г." & Mid(Source, 2) ElseIf Source Like "поселок городского типа *" Then GetAbbr = "пгт " & Mid(Source, 23) ElseIf Source Like "республика *" Then GetAbbr = "респ. " & Mid(Source, 12) ElseIf Source Like "область *" Then GetAbbr = "обл. " & Mid(Source, 8) ElseIf Source Like "ул *" Then GetAbbr = "ул." & Mid(Source, 3) ElseIf Source Like "пер *" Then GetAbbr = "пер." & Mid(Source, 4) ElseIf Source Like "к. *" Then GetAbbr = "корп." & Mid(Source, 3) ElseIf Source Like "оф *" Then GetAbbr = "оф." & Mid(Source, 3) Else GetAbbr = Source End If End Function |