1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | Для того, чтобы удалить текст, находящийся между двумя парными скобками [ ], включая сами скобки, можно использовать любую из нижеопубликованных функций. Обратите внимание на то, что данные функции можно использовать и при работе со скобками ( ) и { } , естественно, заменив "*[[]*]*" на "*(*)*" или "* {*} *" и использовав поиск не_нужных скобок (VB функция InStr). Если же с реализацией подобной замены, возникли трудности, то в примере можно найти универсальную функцию, позволяющую указать нужный "тип" скобок. Private Function DeleteTextInBrackets$(iText$) Dim iStart%, iLength% Do While iText Like "*[[]*]*" iStart = InStr(iText, "[") iLength = InStr(iStart, iText, "]") - iStart + 1 iText = Application . Replace(iText, iStart, iLength, "") Loop DeleteTextInBrackets = iText End Function Private Function DeleteTextInBrackets$(iText$) Dim iStart&, iEnd& Do While iText Like "*[[]*]*" iStart = InStr(iText, "[") iEnd = InStr(iStart, iText, "]") iText = Mid(iText, 1 , iStart - 1 ) & Mid(iText, iEnd + 1 ) Loop DeleteTextInBrackets = iText End Function Private Function DeleteTextInBrackets$(iText$) 'XL97 Dim iStart%, iLength% Do While iText Like "*[[]*]*" iStart = InStr(iText, "[") iLength = InStr(iStart, iText, "]") - iStart + 1 iText = Application . Substitute(iText, Mid(iText, iStart, iLength), "") Loop DeleteTextInBrackets = iText End Function Private Function DeleteTextInBrackets$(iText$) 'XL2000 Dim iStart&, iLength& Do While iText Like "*[[]*]*" iStart = InStr(iText, "[") iLength = InStr(iStart, iText, "]") - iStart + 1 iText = Replace(iText, Mid(iText, iStart, iLength), "") Loop DeleteTextInBrackets = iText End Function Максимально допустимое количество символов в строке не должно превышать 32767 (актуально только для первого и третьего варианта) |