Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Отцентрировать ячейку на экране


Автор: FINANSIST 9.6.2009, 22:42
Создал в меню Excel 
Код

   With MenuBars("Worksheet").Menus.Add(Caption:="Навигация")
      ' Добавление кнопки
      .MenuItems.Add Caption:="Просмотр", OnAction:="Макрос1"
...............................................................................................

ссылки для быстрой навигации в множестве таблиц
По нажатию происходит Application.go to reference:= в именнованный диапозон
Но грабли лежат в кривой центровке после перехода, т.к. именнованные диапозоны это последние скрытые строки каждой таблицы (с шаблонными данными для программного копирования новых строк)
Соответственно по нажатию на ссылки в меню, искомой таблицы вообще не видно, а видно только её последнюю скрытую строку в верхушке экрана, либо наоборот - видно только заголовок искомой таблицы в самом низу: это как "повезёт" :(
Смотрел в сторону методов
Код

ActiveWindow.PointsToScreenPixelsX
.................................................................
ActiveWindow.PointsToScreenPixelsY
.................................................................
ActiveWindow.ScrollIntoView
..................................................................

Но эсперименты с ними плодотворного результата не принесли (видимо неправильно их использовал)
Желаю увидеть советы знающих людей на тему: "как разместить активную ячейку строго по центру экрана?"

Автор: RockClimber 17.6.2009, 12:37
Если номер строки именованного диапазона всегда больше номера строки ячейки, которую надо паказать, на фиксированное число строк, то можно показать примерно так:
Код

Cells(Range("название диапазона").Row-X, Range("название диапазона").Column).Select
, где Х - насколько выше нужно подняться.
Недостатки - нужно знать, на каком листе этот диапазон и открыть сначала этот лист. Еще можно сделать
Код

ActiveWindow.ScrollRow = Range("название диапазона").Row-X
После этой строчки вверху будет строка с номером Range("название диапазона").Row-X

Автор: FINANSIST 17.6.2009, 19:09
Вопрос решен - тема закрыта smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)