Форум по VBA и MS Office

VBA, Excel => VBA, макросы в Excel => Тема начата: Посетитель от 17 августа 2021, 17:56

Название: Excel VBA Макросы. Найти ячейку, над которой находится центр фигуры (Shape).
Отправлено: Посетитель от 17 августа 2021, 17:56
Есть фигура (Shape), нужно найти ячейку, над которой находится центр фигуры. Есть TopLeftCell, есть RightBottomCell, а вот CenterCell нет.
Т.е. мне нужно найти ячейку по координатам: я могу взять у Shape Left+Widht/2 и Top+Height/2. Как это сделать?
Название: Re: Excel VBA Макросы. Найти ячейку, над которой находится центр фигуры (Shape).
Отправлено: Администратор от 17 августа 2021, 18:09
По расчётам логично так найти ячейку, которая находится под центром рисунка.
А как будет фактически - я не знаю.
Адрес найденной ячейки макрос выводит в окно Immediate Window.

Макрос
Sub Макрос()

    Dim Рис As Shape, ЦентрРис(1 To 2)
    Dim ФрагмРис As Range, Ячейка As Range
   
    Set Рис = ActiveSheet.Shapes(1)
   
    ЦентрРис(1) = Рис.Left + Рис.Width / 2
    ЦентрРис(2) = Рис.Top + Рис.Height / 2
   
    Set ФрагмРис = Range(Рис.TopLeftCell, Рис.BottomRightCell)
    For Each Ячейка In ФрагмРис.Cells
        If Ячейка.Left < ЦентрРис(1) Then
            If Ячейка.Left + Ячейка.Width > ЦентрРис(1) Then
                If Ячейка.Top < ЦентрРис(2) Then
                    If Ячейка.Top + Ячейка.Height > ЦентрРис(2) Then
                        Exit For
                    End If
                End If
            End If
        End If
    Next Ячейка
   
    Debug.Print Ячейка.Address
   
End Sub
[свернуть]
Название: Re: Excel VBA Макросы. Найти ячейку, над которой находится центр фигуры (Shape).
Отправлено: Посетитель от 17 августа 2021, 21:29
спасибо