#excel #vba #height #shapes
#excel #vba #высота #фигуры
Вопрос:
Я пытаюсь заставить мою фигуру автоматически изменять высоту, основываясь на том, что находится в ячейке, при изменении значения этой ячейки.
Сложность заключается в том, что это будет 1 дюйм высоты на каждые 1000, введенные в эту ячейку.
Я думал, что это будет что-то вроде приведенного ниже, но это основано на диапазонах и не учитывает соотношение и довольно утомительно.
Private Sub Worksheet_ShapeHeight()
If Range("C8").Value >= 1000 And Range("").Value <= 2000 Then
Shapes("Rectangle 1").Height = 1
Else
If Range("C8").Value >= 2000 And Range("").Value <= 3000 Then
Shapes("Rectangle 1").Height = 2
'---And so on..
End Sub
Комментарии:
1. Примечание: вы включаете
2000
в обоих случаях. Я думаю, что вы хотите< 2000
в первом случае, а не<=
. Аналогично для3000
.2. Я думаю:
Shapes("Rectangle 1").Height = Int(Range("C8").Value/1000)
.
Ответ №1:
Возможно, что-то вроде следующего. Обратите внимание, что единицей Shape.Height
измерения являются точки, а не дюймы.
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Me.Range("C8")) Is Nothing Then Exit Sub
Dim calcHeight As Single
calcHeight = Int(Me.Range("C8").Value / 1000) * 72 ' 72 points per inch
Me.Shapes("Rectangle 1").Height = calcHeight
End Sub