Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Главное меню

Ссылка на автофигуру

Автор M4estro, 08.11.2008, 19:35

« назад - далее »

M4estro

подскажите пожалуйста как можно сделать ссылку на автофигуру?

Например в диапозоне ячеек A1:A500 У меня название автофигур, нажимая на ячейку A1 - выполняется действие ActiveSheet.Shapes("TAutoshape1").Select

Дополнительный вопрос. Можно ли как-нибудь найти автофигуру в документе по названию? CTRL+F не пашет, ибо нав автофигуры не распространяется.

Шпец Докапыч

Цитата: M4estro от 08.11.2008, 19:35
Подскажите, пожалуйста, как можно сделать ссылку на автофигуру?
Например, в диапазоне ячеек A1:A500 у меня название автофигур, нажимая на ячейку A1 - выполняется действие ActiveSheet.Shapes("TAutoshape1").Select

Поместите в модуль листа (ПКМ по ярлычку -> Исходный текст) следующий код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Shape, MultiName As String
  If Selection.Count > 1 Then Exit Sub 'если выделено больше одной ячейки, прекращаем
  If Not Intersect(Target, [A1:A500]) Is Nothing Then 'проверяем вхождение в диапазон
    For Each i In ActiveSheet.Shapes 'перелистываем все автофигуры
      MultiName = Replace(Replace(Replace(Replace(Replace(i.Name, _
                          "AutoShape", "Автофигура"), _
                          "Rectangle", "Прямоуг."), _
                          "Oval", "Овал"), _
                          "Line", "Линия"), _
                          "Freeform", "Полилиния") 'поддержка русских имён
      MultiName = "@" & MultiName & "@" & i.Name & "@" & _
                i.OLEFormat.Object.Name & "@" 'конкатенуем все возможные имена
      If InStr(1, MultiName, "@" & Target & "@") > 0 Then 'ищем среди них наше
        i.Select: Exit Sub 'если нашли, выделяем фигуру и завершаем код
End If: Next: End If: End Sub


ЦитироватьДополнительный вопрос. Можно ли как-нибудь найти автофигуру в документе по названию? CTRL+F не пашет, ибо на автофигуры не распространяется.

Разве что отобразить их имена в A1:A500: :)
Sub AllShapeName()
  For Each i In ActiveSheet.Shapes
    n = n + 1
    Cells(n, 1) = i.Name
  Next
End Sub


Тогда можно будет и по Ctrl+F;)
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

M4estro

Спасибо! То что надо :)