Для того, чтобы удалить текст, находящийся между двумя парными скобками [ ], включая сами скобки, можно использовать любую из нижеопубликованных функций. Обратите внимание на то, что данные функции можно использовать и при работе со скобками ( ) и { } , естественно, заменив "*[[]*]*" на "*(*)*" или "*{*}*" и использовав поиск не_нужных скобок (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 (актуально только для первого и третьего варианта)