Страницы: 1
RSS
работа с формами
 
Прошу помочь, с решением, на первый взгляд казалось бы, простого макроса, определяющего положение фигуры на листе.  
К примеру первым запускается макрос, который создает квадрат с заданными координатами.  
 
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 100, 100, 100, 100).Select  
 
Затем я перемещаю в произвольную точку фигуры и хочу программно знать, новое положение.  
Лично я сам пока ума не приложу как это сделать. Помогите, если у кого-то есть хоть какие-нибудь идеи.  
 
Заранее благодарен, Юрий
 
может так  
 
MsgBox Selection.TopLefCell.Address  
 
P.S. Поищите по форуму слово TopLefCell
 
Сохраните ссылку на форму в переменной уровня модуля, потом используйте ее в другом макросе. Код модуля:  
 
Dim MyRect As Shape  
 
Sub CreateRect()  
Set MyRect = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 100, 100, 100, 100)  
End Sub  
 
Sub DisplayMyRectPos()  
If MyRect Is Nothing Then  
   MsgBox "Форма не создана"  
Else  
   With MyRect  
       MsgBox "Left=" & .Left & vbLf & "Top=" & .Top & vbLf & _  
           "Width=" & .Width & vbLf & "Height=" & .Height  
   End With  
End If  
End Sub
 
Что-то похожее обсуждалось здесь: <BR>http://www.planetaexcel.ru/forum.php?thread_id=29035&page_forum=1&allnum_forum=89
 
При создании автофигур, назначайте им всем один и тот же макрос, выводящий сообщение о координатах текущей фигуры.  
 
Потом достаточно будет щелкнуть на фигуре, - и сразу увидите её новые координаты  
Пример можно найти здесь: http://excelvba.ru/code/ShapesCoordinates  
 
Правда, перед перетаскиванием фигуры, которой назначен макрос, её придётся предварительно выделить, удерживая клавишу Ctrl (чтобы не сработал макрос)
 
спасибо всем огромное, все как всегда оказалось просто)))
Страницы: 1
Читают тему
Наверх