Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2010, 15:07   #1
alex_r
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 30
Лампочка Координаты объектов в Excel

Приветствую!

Как можно получить координаты объекта в Excel (Shapes) в виде ссылки типа А1?

Этот код должен по идее собирать ввиде ссылок координаты всех объектов на лист Sheet1

i = 2

For a = 1 To Worksheets.Count
For Each SHP In Worksheets(a).Shapes
Worksheets("Sheet1").Range("A" & i).Value = i - 1

CFA = Worksheets(a).Name & "!" & SHP.Parent.Address '<-----Проблемная строка

Worksheets("Sheet1").Hyperlinks.Add Anchor:=Worksheets("Sheet1").Range( "b" & i), Address:="", SubAddress:=CFA, _
TextToDisplay:=CFA
i = i + 1
Next SHP
Next a

Но SHP.Parent.address не работает. Если вместо Shapes искать например комментарии, то все рабоает норм. Что можно сделать, что бы определялись координаты в этом виде для всех объектов?
alex_r вне форума Ответить с цитированием
Старый 19.01.2010, 15:58   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
SHP.Parent.Address
Для объекта SHP родителем (.Parent) будет объект типа Worksheet, который не имеет свойства Address, - потому и ошибка...


Я даже не знаю, возможно ли сделать ссылку с ячейки на автофигуру (или любой другой Shape)
Если возможно - прикрепите пример файла с такой гиперссылкой - в ответ получите код.

PS: Гиперссылку на ячейку, расположенную под Shape, получить легко.
EducatedFool вне форума Ответить с цитированием
Старый 19.01.2010, 16:36   #3
alex_r
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 30
По умолчанию

Мне достаточно на ячейку под Shape.
alex_r вне форума Ответить с цитированием
Старый 19.01.2010, 16:50   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Нажмите синюю кнопку в этом файле: http://excelvba.ru/XL_Files/Sample__...__18-50-47.zip

Вот весь код:
Код:
Sub test()
    Dim sh1 As Worksheet: Set sh1 = ActiveSheet
    Dim sh As Worksheet, sha As Shape, НоваяЯчейка As Range
    For Each sh In ThisWorkbook.Worksheets
        For Each sha In sh.Shapes
            Set НоваяЯчейка = sh1.Range("a" & sh1.Rows.Count).End(xlUp).Offset(1)
            sh1.Hyperlinks.Add НоваяЯчейка, "", sha.TopLeftCell.Address(, , , True) _
                                             , , sha.TextFrame.Characters.Text
        Next sha
    Next sh
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 19.01.2010, 17:13   #5
alex_r
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 30
По умолчанию

Отлично, то что нужно! Спасибо.
alex_r вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Координаты матрицы mazak Общие вопросы C/C++ 2 06.08.2009 16:55
Координаты в Делфи anymol Помощь студентам 5 16.10.2008 01:21
Координаты расставления. Манжосов Денис :) Помощь студентам 5 10.10.2008 23:51
Координаты ОУ? Fainder Общие вопросы Delphi 9 15.10.2007 20:59
координаты Aram Общие вопросы C/C++ 5 08.06.2007 20:03