All Forums
 Категория Visio
 Форум Вопросы и ответы
 выделить цифры из строки
Author Previous Topic Topic Next Topic  

nnsav

21 Posts

Posted - 05/25/2011 :  13:48:31
Добрый день.
Можно ли с помощью функций Visio выделить из строки цифры?
Например есть надпись V314, мне нужно повторить номер 314 еще в нескольких местах, сейчас использую выражение:
=LEFT(SHAPETEXT(Sheet.52!TheText),((LEN(SHAPETEXT(Sheet.52!TheText))-1)))

Все хорошо, но если вместо V314 попадается НС314 приходится менять выражение, хотелось бы получить универсальный метод (выделить цифры).

Surrogate

Russia
122 Posts

Posted - 05/26/2011 :  07:58:49  Visit Surrogate's Homepage
посмотрел в справочнике функций визио, работающих с текстом ничего не нашел. решил данную задачу примитивным образом

создал ячейки user-defined cell - user.0 ... user.9, эти ячейки вставил формулы:

user.x = IF(ISERROR(FIND(x,SHAPETEXT(Sheet.52!TheText))),"",FIND(x,SHAPETEXT(Sheet.52!TheText)))
' находим позицию текста, где первый раз встречается это число
где x от 0 до 9

ну и универсальное выражение:

=MID(SHAPETEXT(Sheet.52!TheText),MIN(User.0,User.1,User.2,User.3,User.4,User.5,User.6,User.7,User.8,User.9),MAX(User.0,User.1,User.2,User.3,User.4,User.5,User.6,User.7,User.8,User.9)-MIN(User.0,User.1,User.2,User.3,User.4,User.5,User.6,User.7,User.8,User.9)+1)


конечно метод муторный .. не будет работать если имеем дело с текстовыми строками вида Б29202Х1


Edited by - Surrogate on 05/26/2011 08:02:25
Go to Top of Page

nnsav

21 Posts

Posted - 05/26/2011 :  12:02:35
Спасибо.
Действительно муторно, но вариант.

В вашем ответе есть такие строки: "посмотрел в справочнике функций визио, работающих с текстом".
Подскажите пожалуйста, есть ли какой-то справочник, где видно какие функции за что отвечают. Сейчас, когда нужно что-либо найти, тупо иду по справочнику сверху вниз, читая описание каждой функции (работаю с Visio 2007 SDK)
Go to Top of Page

Surrogate

Russia
122 Posts

Posted - 05/26/2011 :  13:52:33  Visit Surrogate's Homepage
скан из книги Graham Wideman "Visio 2003 Developer's Survival Pack"




Edited by - Surrogate on 05/26/2011 13:53:25
Go to Top of Page

Surrogate

Russia
122 Posts

Posted - 07/19/2011 :  14:44:33  Visit Surrogate's Homepage
пришлось сделать для себя макрос, для отделения цифр

Sub digitals_only()
Dim ShText As String ' текст шейпа с ID=52
Dim ShDig As String ' только цыфры в тексте шейпа с ID=52
ShDig = ""
ShText = ActivePage.Shapes.Item(2).Text ' присвоение значения переменной ShText
l = Len(ShText) ' определение количества символов в ShText
For x = 1 To l ' начало цикла
y = Mid(ShText, x, 1) ' посимвольный перебор перебор
KeyAscii = Asc(y) ' получение кода ASCII текущего символа
If KeyAscii > 47 And KeyAscii < 58 Then ShDig = ShDig & y ' если условие выполняется, добавление текущего символа в переменную ShDig
Next x ' конец цикла
Debug.Print ShDig
End Sub

Может кому пригодится :)

Go to Top of Page

Robinkzn

84 Posts

Posted - 07/19/2011 :  19:21:32
Ничего не понимаю. Если макрос на VBA, там же есть функция isnumeric.
Go to Top of Page

Surrogate

Russia
122 Posts

Posted - 07/19/2011 :  20:33:18  Visit Surrogate's Homepage
спасибо, а я не знал про эту функцию

Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)