Страницы: 1
RSS
Как узнать высоту окна листа, в которой видны ячейки?
 
Добрый день. Как узнать высоту окна листа, в которой видны ячейки?
Есть свойство ActiveWindow.UsableHeight, но оно включает шапку с адресами столбцов и область с группировкой.
Как узнать размер, который на скриншоте?
Приблизительные данные мне не подходят, хотел бы узнать, может быть есть специальное свойство (объект, метод), чтобы это узнать.
 
Может это немного поможет
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=115227&TITLE_SEO=115227-kolichestvo-strok-lista-na-ekrane-monitora&MID=956784&tags=&q=%D0%91%D0%9C%D0%92+%D1%88%D0%B0%D0%BF%D0%BA%D0%B0&FORUM_ID%5B0%5D=0&DATE_CHANGE=0&order=relevance&s=%D0%9D%D0%B0%D0%B9%D1%82%D0%B8#message956784
По вопросам из тем форума, личку не читаю.
 
За указанную в #1 область отвечает диапазон ActiveWindow.VisibleRange, при этом часть его последней строки может быть невидимой. Можно поиграться с предпоследней строкой, пытаясь увеличить ее высоту:
Код
Option Explicit
Function GetVisibleRangeHeight()
 Dim r As Range, n As Long, i As Long, h_old As Double, h As Double, row As Range
 With ActiveWindow
   Set r = .VisibleRange
   n = r.Rows.Count
   Set r = r.Resize(n - 1)       ' отбросили последнюю строку, которая может быть видна не полностью
   Set row = Rows(r.row + n - 2) ' последняя строка r
   h_old = row.RowHeight         ' и ее высота
   h = h_old
   Do While True
     h = h + 0.25
     row.RowHeight = h
     If .VisibleRange.Rows.Count <> n Then
       Exit Do
     End If
   Loop
   row.RowHeight = h - 0.25      ' вернули предыдущую высоту
   
   GetVisibleRangeHeight = r.Height
   row.RowHeight = h_old
  End With
End Function
Изменено: sokol92 - 30.03.2020 18:52:53
Владимир
Страницы: 1
Наверх