Excel VBA Макросы. Найти ячейку, над которой находится центр фигуры (Shape).

Автор Посетитель, 17 августа 2021, 17:56

Посетитель

Есть фигура (Shape), нужно найти ячейку, над которой находится центр фигуры. Есть TopLeftCell, есть RightBottomCell, а вот CenterCell нет.
Т.е. мне нужно найти ячейку по координатам: я могу взять у Shape Left+Widht/2 и Top+Height/2. Как это сделать?

Администратор

По расчётам логично так найти ячейку, которая находится под центром рисунка.
А как будет фактически - я не знаю.
Адрес найденной ячейки макрос выводит в окно 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
[свернуть]