2013-05-14 4 views
1

У меня есть Excel-лист со значениями в столбце D. Я хотел бы установить высоту строки относительно значения ячейки D каждой строки. Значения в D являются небольшими% -значениями, такими как 0,0593%, за исключением первого (D4 = 31%) и последнего (D92 = 40%)Excel VBA rowheigt от значения в диапазоне

Чтобы получить небольшие значения на разумной высоте, я хотел бы умножить их с 10'000 - но возникает проблема с максимальной высотой 409.

У меня есть сценарий, который работает до тех пор, пока он не достигнет высоких значений, поэтому я попробовал формулу if. Но, честно говоря, у меня нет идеи, что я здесь делаю ... Я скопировал ее вместе.

Таким образом, проблемы: работа только в диапазоне D5-D91, и если значение должно превышать 409, дайте ему что-то вроде 15px.

Thanx для вашей помощи!

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

    Dim i As Long 
    For i = 4 To Cells(Rows.Count, 1).End(xlUp).Row - 1 
     With Cells(i, 4) 
        If .Cells(i, 4).Value * 10000 > 409 Then 
      Rows(i).RowHeight = 12 
        Else 
      Rows(i).RowHeight = Cells(i, 4).Value * 10000 
      End If 
     End With 
    Next i 

End Sub 
+1

Почему вы используете 'Worksheet_SelectionChange' событие, когда это может быть достигнуто с помощью процедуры? Также «Ячейки (i, 4). Значение * 10000 выглядит странным bcoz, если столбец D имеет неправильное значение, он может выйти из строя. – Santosh

+0

Как я уже сказал, я скопировал этот материал вместе и абсолютно не уверен в этом. И мне нужен только диапазон строк D. Так что значение должно определить. быть 0.xxxx%. Я знаю, что в скрипте есть ошибки, но решения помогут ... –

ответ

1

Скопируйте код ниже для любого стандартного модуля & Run. Возможно, вам придется настроить код в соответствии с вашим требованием.

Sub sample() 

    Dim i As Long 


     For i = 4 To Cells(Rows.Count, 1).End(xlUp).Row 
      If Cells(i, 4).Value * 10000 > 409 Then 
       Rows(i).RowHeight = 12 
      Else 
       Rows(i).RowHeight = Cells(i, 4).Value * 10000 
      End If 
     Next 

End Sub 
+0

Да! Отлично - это очень ценится! Следующий ответ - мой код с трюками за мин. высота. Спасибо –

+0

@fab_ulus Прошу проголосовать за этот ответ, если вы сочтете это полезным. – Santosh

0
Sub sample() 

    Dim i As Long 


     For i = 4 To Cells(Rows.Count, 1).End(xlUp).Row 
      If Cells(i, 4).Value * 100000 > 409 Then 
       Rows(i).RowHeight = 20 
      ElseIf Cells(i, 4).Value * 100000 < 10 Then 
       Rows(i).RowHeight = 12 
      Else 
       Rows(i).RowHeight = Cells(i, 4).Value * 100000 
      End If 
     Next 

End Sub 
+0

Молодцы :) @fab_ulus – Santosh

Смежные вопросы