Как изменить высоту фигуры на основе значения ячейки?

#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
введите описание изображения здесь

Комментарии:

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