Дабрый день, нужна помощь по написанию макроса. Дана табличка , которая вылядят так:
{17} Антон
{2} Сережа
{322} Андрей
{43} Леша
и т.д.
Данные эти в столбце Excel. В фигурных скобочках уникальные номера студентов. Как забирать данные уникальных идентификаторов, и присваивать этот номер переменной ??
Заранее спасибо !!
Кусок текста в переменную
Модератор: Naeel Maqsudov
- 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
aentelis.livejournal.com
-
- Сообщения: 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
Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
-
- Сообщения: 163
- Зарегистрирован: 05 мар 2009, 11:27
вообще круто !!! спасибо огромное !!