Есть пользовательская функция, при помощи которой происходит замена значений в ячейке. Как сделать так, чтобы замена значений происходила с учетом следующего правила: "Если пробелов по краям слова нет, значит это не слово, а часть слова, и замена не осуществляется."?
Недостаток этого подхода в том, что при замене придется отделять пробелами различные знаки в начале и в конце слов. Для этого подготовил набор знаков, которые, возможно, придется отделять (файл примера, вкладка "signs").
Еще один вопрос: Где удобнее и эффективнее разместить набор знаков? В отдельной вкладке или в самом макросе? Есть ли возможность использовать в пользовательских параметрах функции ключевое слово для определения того, что следующий за ним диапазон указывает на расположение набора знаков?
Пример:
Код
=NSub(A8;$D$8:$E$10;1;2;signs:signs!A1:A21)
В данном примере ключевое слово "signs:".
Если есть более простой способ для решения этой задачи, то было бы интересно узнать о нем.
Function nn(Txt As String, rdic As Range)
Set dic_mass = CreateObject("Scripting.Dictionary")
mass = rdic
For i = 1 To UBound(mass)
dic_mass.Item(mass(i, 1)) = mass(i, 2)
Next
Set objRegExp = CreateObject("VBScript.RegExp")
For Each kKey In dic_mass.Keys
objRegExp.Pattern = "(^|[^A-Za-zА-Яа-я0-9])(" & kKey & ")([^A-Za-zА-Яа-я0-9]|$)"
repl = "$1" & dic_mass.Item(kKey) & "$3"
Txt = objRegExp.Replace(Txt, repl)
Next
nn = Txt
End Function