Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
19.04.2024, 03:35:42

Войти
Хотите поблагодарить участника за дельный совет? Нажмите [Повысить]. Так вы заслуженно поднимите репутацию активному участнику.
33 242 Сообщений в 5 457 Тем от 6 758 Пользователей
Последний пользователь: Сергей2662
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Как определить Адрес ячейки по ее координатам?
Страниц: [1]   Вниз
Печать
Автор Тема: Как определить Адрес ячейки по ее координатам?  (Прочитано 12963 раз)
0 Пользователей и 1 Гость смотрят эту тему.
AlexanderFadin
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 2


Просмотр профиля E-mail
« : 01.09.2011, 11:22:28 »

Добрый день, Уважаемые!
Подскажите пожалуйста как определить адрес ячейки по ее координатам?
Поясняю У меня есть скрипт, найденный на просторах Интернета, который определяет имена картинок на листе, а также ее координаты. Как исходя из этих координатов определить в какой ячейке находится эта картинка? К сожалению поиск по форуму результата не дал, точнее сказать, нашел тему про полилинии http://www.excel-vba.ru/forum/index.php?topic=472.0, где был выложен скрипт, который выдавал координаты курсора мыши и одновременно адрес ячейки, но вот приспособить под свои нужды не сумел.
Собственно, скрипт:

Код:
Sub GetShapeProperties()
Dim sShapes As Shape, lLoop As Long
Dim wsStart As Worksheet, WsNew As Worksheet        ''''''''''''''''''''''''''''''''''''''''''''''''    ''''''''''LIST PROPERTIES OF SHAPES'''''''''''''    ''''''''''Dave Hawley www.ozgrid.com''''''''''''    ''''''''''''''''''''''''''''''''''''''''''''''''
Set wsStart = ActiveSheet
Set WsNew = Sheets.Add         'Add headings for our lists. Expand as needed
WsNew.Range("A1:F1") = _
     Array("Shape Name", "Shape Type", "Height", "Width", "Left", "Top")              'Loop through all shapes on active sheet
For Each sShapes In wsStart.Shapes        'Increment Variable lLoop for row numbers
lLoop = lLoop + 1
With sShapes            'Add shape properties
WsNew.Cells(lLoop + 1, 1) = .Name
WsNew.Cells(lLoop + 1, 2) = .OLEFormat.Object.Name
WsNew.Cells(lLoop + 1, 3) = .Height
WsNew.Cells(lLoop + 1, 4) = .Width
WsNew.Cells(lLoop + 1, 5) = .Left
WsNew.Cells(lLoop + 1, 6) = .Top            'Follow the same pattern for more
End With
Next sShapes          'AutoFit Columns.
WsNew.Columns.AutoFit
End Sub
Записан
nilem
Эксперты
Постоялец
*

Репутация: +39/-0
Офлайн Офлайн

Сообщений: 194


Просмотр профиля E-mail
« Ответ #1 : 01.09.2011, 11:39:38 »

Цитировать
...Как исходя из этих координат определить, в какой ячейке находится эта картинка?
Попробуйте вот это прикрутить:
Код:
Sub ert()
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
    MsgBox shp.Name & "; " & shp.TopLeftCell.Address
    MsgBox shp.Name & "; " & shp.BottomRightCell.Address
Next
End Sub
Записан
AlexanderFadin
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 2


Просмотр профиля E-mail
« Ответ #2 : 01.09.2011, 13:54:50 »

Ура, получилось, большое спасибо!
Вот так прикрутил к своему коду
With sShapes            'Add shape properties
WsNew.Cells(lLoop + 1, 1) = .Name
WsNew.Cells(lLoop + 1, 2) = .OLEFormat.Object.Name
WsNew.Cells(lLoop + 1, 3) = .Height
WsNew.Cells(lLoop + 1, 4) = .Width
WsNew.Cells(lLoop + 1, 5) = .Left
WsNew.Cells(lLoop + 1, 6) = .Top
WsNew.Cells(lLoop + 1, 7) = .TopLeftCell.Address


Код:
Sub GetShapeProperties()
Dim sShapes As Shape, lLoop As Long
Dim wsStart As Worksheet, WsNew As Worksheet        ''''''''''''''''''''''''''''''''''''''''''''''''    ''''''''''LIST PROPERTIES OF SHAPES'''''''''''''    ''''''''''Dave Hawley www.ozgrid.com''''''''''''    ''''''''''''''''''''''''''''''''''''''''''''''''
Set wsStart = ActiveSheet
Set WsNew = Sheets.Add         'Add headings for our lists. Expand as needed
WsNew.Range("A1:G1") = _
     Array("Shape Name", "Shape Type", "Height", "Width", "Left", "Top", "Adress")              'Loop through all shapes on active sheet
For Each sShapes In wsStart.Shapes        'Increment Variable lLoop for row numbers
lLoop = lLoop + 1
With sShapes            'Add shape properties
WsNew.Cells(lLoop + 1, 1) = .Name
WsNew.Cells(lLoop + 1, 2) = .OLEFormat.Object.Name
WsNew.Cells(lLoop + 1, 3) = .Height
WsNew.Cells(lLoop + 1, 4) = .Width
WsNew.Cells(lLoop + 1, 5) = .Left
WsNew.Cells(lLoop + 1, 6) = .Top
WsNew.Cells(lLoop + 1, 7) = .TopLeftCell.Address
End With
Next sShapes          'AutoFit Columns.
WsNew.Columns.AutoFit
End Sub
Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru