Страницы: 1
RSS
-=Текст Shapes=-
 
Всем привет!  
Подскажите, пожалуйста, как переходить на topleftcell выбранного shapes по тексту?  
Суть: в ЛистБокс1 подтягивать тексты из всех фигур на активном листе, потом двойным нажатием на текст в ЛистБоксе1 переходить на ячейку возле этой фигуры и выделять её (сейчас сделал это по названию фигуры, но нужно именно по тексту, т.к. в текущем варианте используется 2 ЛистБокса, а нужно сократить до одного).  
Необходимо сделать один ЛистБокс из двух (во вложении). Меню можно вызвать с помощью Ctrl+q  
Заранее благодарю.
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
А не Вам я, случайно, не так давно делал что-то подобное?
 
Нет, пару дней назад написал на работе.  
А есть подсказка? :)
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
Да не подсказка, а готовое решение. Поиск картинки по тексту.
 
Вариант.
 
какой? )  
*пытаюсь добавить в свой код части кода Юрия - результат огорчает*
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
Что-то сраборало, и файл превратился в монстра 3,5 М. -((
 
Спасибо, Юрий.  
Получилось, что-то такое: (только остался один вопрос - почему если мы делаем в листбоксе две колонки - значение отображается только в первой?)  
 
Option Explicit  
 
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)  
   Dim sha_addr As String  
 
   With ActiveSheet  
       sha_addr = .Shapes(ListBox1.List(, 2)).TopLeftCell.Address  
       .Range(sha_addr).Select  
       .Shapes.Range(ListBox1.List(, 2)).Select  
       Unload UserForm1  
   End With  
 
End Sub  
 
 
Private Sub UserForm_Initialize()  
   Dim shape_ As Shape, x As Long  
     
   For Each shape_ In ActiveSheet.Shapes  
   If shape_.Type <> "13" Then  
       If Trim(shape_.DrawingObject.Text) <> "" Then  
       With Me.ListBox1  
           .ColumnCount = 2  
           .AddItem ""  
           .List(x, 1) = shape_.DrawingObject.Text  
           .List(x, 2) = shape_.Name  
           x = x + 1  
           End With  
       End If  
   End If  
   Next  
     
End Sub
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
Спасибо Ran, тоже хороший вариант, только желательно чтобы название фигуры не отображалось вообще.
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
Попробуйте начать с нуля :-)  
.List(x, 0) = shape_.DrawingObject.Text  
.List(x, 1) = shape_.Name
 
Ага, понял. Спасибо, закрывайте тему.
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
LightZ, я думал, что поставить ширину первого столбца = 0 проблем вызвать не должно!-:))
 
Хехе, как вариант, спасибо ))
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
Ещё вопрос: как ВБА знает к какому столбцу применять ширину? (если столбцов больше одного)  
Me.Listbox1.ColumnWidths = 0  
 
В моём варианте применяется ко второму...
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
Так - к первому. Если добавите ещё одно значение (через точку с запятой), то оно будет применимо ко второму, если...
 
C 0 я похоже погорячился, не работает. Нужно >0, например 0,1. Хотя в Аксессе работает...
 
У меня всегда ноль работал - таким образом скрывал "ненужный" столбец.
 
Если сделать ширину 1 столбца 0, то    
ListBox2.Text    
берется из 2 столбца, а если больше - из первого.
 
Чёт я запутался: а зачем тогда его скрывать, если нужно его видеть? :-)
 
А у меня это  
.List(x, 0) = shape_.DrawingObject.Text  
.List(x, 1) = shape_.Name  
в обратном порядке. -:)  
.List(x, 0) = shape_.Name  
.List(x, 1) = shape_.DrawingObject.Text
 
Сыскал, где собака порылась.  
Здесь  
Values for the TextColumn property range from –1 to the number of columns in the list. The TextColumn value for the first column is 1, the value of the second column is 2, and so on. Setting TextColumn to 0 displays the ListIndex values. Setting TextColumn to –1 displays the first column that has a ColumnWidths value greater than 0.
 
Чет я тоже уже запутался.  
Кста, у меня .ColumnWidths = 0 работает
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
LightZ, а разве задача, сформулированная в стартовом сообщении (активировать ячейку автофигуры, найденной по тексту в ней, и при помощи одного ЛистБокса) - не решена? Или уже что-то другое не получается? :-)
 
Нет, конечно же всё уже решено. :)
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
Страницы: 1
Наверх