Страница 1 из 1

Кусок текста в переменную

Добавлено: 10 авг 2009, 14:28
kuznetsovSergey
Дабрый день, нужна помощь по написанию макроса. Дана табличка , которая вылядят так:
{17} Антон
{2} Сережа
{322} Андрей
{43} Леша
и т.д.
Данные эти в столбце Excel. В фигурных скобочках уникальные номера студентов. Как забирать данные уникальных идентификаторов, и присваивать этот номер переменной ??

Заранее спасибо !!

Re: Кусок текста в переменную

Добавлено: 10 авг 2009, 14:44
Aent

Код: Выделить всё

dim i as long, s as string,n as long
.....
s = activecell.value
if left$(s,1) <> "{" then goto err_proc 'Неверный формат. Нет левой скобки
i = instr(s,"}")
if i = 0 then goto err_proc 'Неверный формат. Нет правой скобки
s=mid$(s,2,i-2)
if not (s like string(i,"#")) then goto err_proc 'Неверный формат. В ключе не цифры
on error resume next
n =Clng(s)
if err.number <> 0 then
    err.clear 
    goto err_proc 'Неверный формат. Cлишком большое число
end if

Re: Кусок текста в переменную

Добавлено: 10 авг 2009, 17:00
kuznetsovSergey
пробовал, пробовал, крутил вертел, этот код. Ничего не вышло ...

Re: Кусок текста в переменную

Добавлено: 10 авг 2009, 17:24
EducatedFool
Попробуйте тогда такой вариант:

Код: Выделить всё

[color=darkblue]Sub[/color] test()
    [color=darkblue]Dim[/color] cell [color=darkblue]As[/color] Range, ra [color=darkblue]As[/color] Range: Application.ScreenUpdating = [color=darkblue]False[/color]
    [color=darkblue]Set[/color] ra = Range([A1], Range("A" & Rows.Count).End(xlUp))
    [color=darkblue]For[/color] [color=darkblue]Each[/color] cell [color=darkblue]In[/color] ra.Cells
        x = ТоЧтоВСкобках(cell)
        [color=darkblue]If[/color] Len(x) [color=darkblue]Then[/color] MsgBox "В ячейке " & cell.Address & " в скобках находится число " & x
    [color=darkblue]Next[/color] cell
[color=darkblue]End[/color] [color=darkblue]Sub[/color]

[color=darkblue]Function[/color] ТоЧтоВСкобках([color=darkblue]ByVal[/color] txt [color=darkblue]As[/color] [color=darkblue]String[/color]) [color=darkblue]As[/color] String
    pos1 = InStr(1, txt, "{"): [color=darkblue]If[/color] pos1 = 0 [color=darkblue]Then[/color] [color=darkblue]Exit[/color] [color=darkblue]Function[/color]
    pos2 = InStr(pos1 + 1, txt, "}"): [color=darkblue]If[/color] pos2 = 0 [color=darkblue]Then[/color] [color=darkblue]Exit[/color] [color=darkblue]Function[/color]
    ТоЧтоВСкобках = Mid(txt, pos1 + 1, pos2 - pos1 - 1)
[color=darkblue]End[/color] [color=darkblue]Function[/color]
Изображение
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Можно ещё проще:

Код: Выделить всё

[color=darkblue]Sub[/color] test2()
    [color=darkblue]For[/color] [color=darkblue]Each[/color] cell [color=darkblue]In[/color] Range([A1], Range("A" & Rows.Count).End(xlUp))
        x = Val(Mid(Trim(cell), 2))
        [color=darkblue]If[/color] x [color=darkblue]Then[/color] MsgBox "В ячейке " & cell.Address & " в скобках находится число " & x
    [color=darkblue]Next[/color] cell
[color=darkblue]End[/color] [color=darkblue]Sub[/color]

Re: Кусок текста в переменную

Добавлено: 12 авг 2009, 09:53
kuznetsovSergey
вообще круто !!! спасибо огромное !!