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

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
kuznetsovSergey
Сообщения: 163
Зарегистрирован: 05 мар 2009, 11:27

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

Заранее спасибо !!
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

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

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
Андрей Энтелис,
aentelis.livejournal.com
kuznetsovSergey
Сообщения: 163
Зарегистрирован: 05 мар 2009, 11:27

пробовал, пробовал, крутил вертел, этот код. Ничего не вышло ...
Аватара пользователя
EducatedFool
Сообщения: 197
Зарегистрирован: 06 апр 2008, 14:03
Откуда: Россия, Урал
Контактная информация:

Попробуйте тогда такой вариант:

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

[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]
Макросы для Excel, Word, CorelDRAW. Быстро, профессионально, недорого. http://ExcelVBA.ru/

Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
kuznetsovSergey
Сообщения: 163
Зарегистрирован: 05 мар 2009, 11:27

вообще круто !!! спасибо огромное !!
Ответить