Еще парочка бесплатных. Первый дает - asdghjgfyur, а второй - asd()ghj()gfyur() Sub Macros1() Dim stroka As String Dim perv_skobka As Integer Dim vtor_skobka As Integer stroka = "asd(er)ghj(nm)gfyur(rtd)" 'строка исходная Do perv_skobka = InStr(1, stroka, "(") 'позиция открывающей скобки vtor_skobka = InStr(1, stroka, ")") 'позиция закрывающей скобки If perv_skobka = 0 Or vtor_skobka = 0 Then Exit Do 'если нет скобок заканчиваем цикл stroka = Mid(stroka, 1, perv_skobka - 1) & Mid(stroka, vtor_skobka + 1) 'создаем строку без скобок и их содержимого Loop MsgBox stroka ' вывод новой строки End Sub
Sub Macros2() Dim stroka As String Dim perv_skobka As Integer Dim vtor_skobka As Integer stroka = "asd(er)ghj(nm)gfyur(rtd)" 'строка исходная Do perv_skobka = InStr(perv_skobka + 1, stroka, "(") 'позиция открывающей скобки vtor_skobka = InStr(vtor_skobka + 1, stroka, ")") 'позиция закрывающей скобки If perv_skobka = 0 Or vtor_skobka = 0 Then Exit Do stroka = Mid(stroka, 1, perv_skobka) & Mid(stroka, vtor_skobka) 'создаем строку без содержимого в скобках Loop MsgBox stroka ' вывод новой строки End Sub
Sub parse() Dim flag As Boolean Dim mystr As String Dim cleanstr As String Dim symbol As String * 1 Dim i As Integer
flag = True mystr = InputBox("Строка для разбора", "Парсер", "asd(er)ghj(nm)gfyur(rtd)") For i = 1 To Len(mystr) 'от первой до последней буквы symbol = Mid(mystr, i, 1) 'взяли одну букву If symbol = "(" Then 'если это открывающая скобка flag = False 'буквы не берем в новую строчку cleanstr = cleanstr + symbol 'а саму скобочку все-таки запишем End If If symbol = ")" Then flag = True 'если скобка закрывающая -у If flag = True Then cleanstr = cleanstr + symbol 'то пишем буковки к результату Next MsgBox ("Было: " + mystr + vbCrLf + "Стало: " + cleanstr) 'показали ответ End Sub
удалить: er nm rtd
Если можно подробнее расписать всё. Заранее благодарна.