Насколько мне известно, Excel не поддерживает события для фигур, поэтому нет простого способа определить изменение размера фигуры и затем изменить ее размер.
Можно подражать тому, что вы просите, используя обходной путь.
Представьте, что в вашей электронной таблице есть два прямоугольника, которые называются «Прямоугольник 1» и «Прямоугольник 2». Когда пользователь заканчивает обновление текста в любом данном окне, он должен затем щелкнуть электронную таблицу, чтобы выйти из режима редактирования фигуры. Вы можете обнаружить это, используя событие Workbook_SheetSelectionChange
.
Следующий модуль позволяет установить размер прямоугольников в качестве констант и соответствующим образом изменит их размер:
Const Rect1Height As Integer = 50
Const Rect1Width As Integer = 200
Const Rect2Height As Integer = 50
Const Rect2Width As Integer = 200
Sub SetRectangleSize()
Dim Rect1 As Shape
Dim Rect2 As Shape
Set Rect1 = ActiveSheet.Shapes("Rectangle 1")
Set Rect2 = ActiveSheet.Shapes("Rectangle 2")
Rect1.Height = Rect1Height
Rect1.Width = Rect1Width
Rect2.Height = Rect1Height
Rect2.Width = Rect1Width
End Sub
Теперь все, что вам нужно сделать, это вызвать этот саб из события уровня рабочей книги:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
SetRectangleSize
End Sub
Каждый раз, когда пользователь обновляет текст в одном из прямоугольников, он щелкает обратно по электронной таблице, и событие запускается, в результате чего размеры прямоугольников определяются в соответствии с заданными вами параметрами постоянной высоты и ширины.