Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Срабатывание макроса на попадания листа в область видимости - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Срабатывание макроса на попадания листа в область видимости
DimOzerov Дата: Понедельник, 14.08.2017, 06:04 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Доброе утро, уважаемые программисты.
Помогите решить вопрос.

В экселе есть макрос - реакции, на попадании определенной строки - в поле зрения.
Если к примеру - строка 500 - попадает в область видимости экрана - то макрос срабатывает один раз.

Как сделать подобную реакцию макроса в ворде, чтобы макрос реагировал на попадание определенного листа (например 5 листа) в поле видимости экрана ?
(речь идет не о вставке курсора на определенный лист, а именно о попадании листа - в область видимости)
К сообщению приложен файл: 129386.xls (36.0 Kb) · 214744.doc (84.0 Kb)
 
Ответить
СообщениеДоброе утро, уважаемые программисты.
Помогите решить вопрос.

В экселе есть макрос - реакции, на попадании определенной строки - в поле зрения.
Если к примеру - строка 500 - попадает в область видимости экрана - то макрос срабатывает один раз.

Как сделать подобную реакцию макроса в ворде, чтобы макрос реагировал на попадание определенного листа (например 5 листа) в поле видимости экрана ?
(речь идет не о вставке курсора на определенный лист, а именно о попадании листа - в область видимости)

Автор - DimOzerov
Дата добавления - 14.08.2017 в 06:04
anvg Дата: Понедельник, 14.08.2017, 20:29 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Доброе время суток.
В экселе есть макрос - реакции, на попадании определенной строки - в поле зрения.
В Word нет события на прокрутку окна. Так что придётся делать таймер. В обработчике события таймера уже по проще, если под заданной точкой окна объект Range, то можно получить номер страницы так.
[vba]
Код
Application.ActiveWindow.RangeFromPoint(128,128).Information(wdActiveEndPageNumber)
[/vba]Только вот в чём вопрос - у меня большой монитор и на экране Word показывает одновременно 6 страниц - как определить, какая из них нужная?
 
Ответить
СообщениеДоброе время суток.
В экселе есть макрос - реакции, на попадании определенной строки - в поле зрения.
В Word нет события на прокрутку окна. Так что придётся делать таймер. В обработчике события таймера уже по проще, если под заданной точкой окна объект Range, то можно получить номер страницы так.
[vba]
Код
Application.ActiveWindow.RangeFromPoint(128,128).Information(wdActiveEndPageNumber)
[/vba]Только вот в чём вопрос - у меня большой монитор и на экране Word показывает одновременно 6 страниц - как определить, какая из них нужная?

Автор - anvg
Дата добавления - 14.08.2017 в 20:29
DimOzerov Дата: Понедельник, 14.08.2017, 22:24 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
на экране Word показывает одновременно 6 страниц - как определить, какая из них нужная?

Я всегда прокручиваю страницы так, что в поле видимости - всегда одна страница.
Если - в области экрана несколько страниц- то увеличиваю масштаб - так, чтобы была только одна.

Вы привели в пример - строчку кода.
А куда ее надо поставить в ворде?

Ведь в имеющемся экселевском макросе - код разбит на код книги и код листа.
А в Ворде там какая-то другая схема расположения макросов в структуре документа, вроде бы.
 
Ответить
Сообщение
на экране Word показывает одновременно 6 страниц - как определить, какая из них нужная?

Я всегда прокручиваю страницы так, что в поле видимости - всегда одна страница.
Если - в области экрана несколько страниц- то увеличиваю масштаб - так, чтобы была только одна.

Вы привели в пример - строчку кода.
А куда ее надо поставить в ворде?

Ведь в имеющемся экселевском макросе - код разбит на код книги и код листа.
А в Ворде там какая-то другая схема расположения макросов в структуре документа, вроде бы.

Автор - DimOzerov
Дата добавления - 14.08.2017 в 22:24
anvg Дата: Вторник, 15.08.2017, 13:16 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
А куда ее надо поставить в ворде?

Я, собственно, и не выкладывал готовый код. Это черновой набросок алгоритма, требующий разработки. Код для таймера. Та строчка, которую нужно куда-то там вставить демострирует, как при наступлении события таймера получить объект Range, лежащий под заданными координатами экрана и номер страницы его конечного символа. Всё это требует исследования и разработки решения.
 
Ответить
Сообщение
А куда ее надо поставить в ворде?

Я, собственно, и не выкладывал готовый код. Это черновой набросок алгоритма, требующий разработки. Код для таймера. Та строчка, которую нужно куда-то там вставить демострирует, как при наступлении события таймера получить объект Range, лежащий под заданными координатами экрана и номер страницы его конечного символа. Всё это требует исследования и разработки решения.

Автор - anvg
Дата добавления - 15.08.2017 в 13:16
DimOzerov Дата: Вторник, 15.08.2017, 15:41 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
anvg, а что такое RangeFromPoint(128,128) - это номер страницы ?
 
Ответить
Сообщениеanvg, а что такое RangeFromPoint(128,128) - это номер страницы ?

Автор - DimOzerov
Дата добавления - 15.08.2017 в 15:41
anvg Дата: Вторник, 15.08.2017, 17:14 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
это номер страницы ?
Нет, судя по справке, координаты точки на экране. Метод возвращает объект Word, находящийся под этой точкой.
 
Ответить
Сообщение
это номер страницы ?
Нет, судя по справке, координаты точки на экране. Метод возвращает объект Word, находящийся под этой точкой.

Автор - anvg
Дата добавления - 15.08.2017 в 17:14
DimOzerov Дата: Четверг, 17.08.2017, 20:00 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
anvg, не подскажете какой аналог строки Экселя - есть в Ворде ?
В экселевском макросе имеется строчка обозначения нужного места
[vba]
Код
Intersect(ActiveWorkbook.ActiveSheet.Rows("500"), ActiveWindow.VisibleRange)
[/vba]

А в Ворде как эта строчка должна отобразится?
Я имею ввиду - что может быть заменой обозначения пятисотой строки Rows("500") - для вордовской страницы №10 ?

(то есть в ворде строк нет, есть наверное обозначение навроде page("10") )
 
Ответить
Сообщениеanvg, не подскажете какой аналог строки Экселя - есть в Ворде ?
В экселевском макросе имеется строчка обозначения нужного места
[vba]
Код
Intersect(ActiveWorkbook.ActiveSheet.Rows("500"), ActiveWindow.VisibleRange)
[/vba]

А в Ворде как эта строчка должна отобразится?
Я имею ввиду - что может быть заменой обозначения пятисотой строки Rows("500") - для вордовской страницы №10 ?

(то есть в ворде строк нет, есть наверное обозначение навроде page("10") )

Автор - DimOzerov
Дата добавления - 17.08.2017 в 20:00
anvg Дата: Пятница, 18.08.2017, 14:27 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Цитата
какой аналог строки Экселя - есть в Ворде ?

Формально аналога нет, как и нет аналога VisbileRange (хотя можете поискать, а вдруг?!).
Можно получить номер строки только на странице Range.Information(wdFirstCharacterLineNumber) при учёте некоторых условий детали. Можно получить через Application.ActiveWindow.RangeFromPoint(1,1) условный видимый односимвольный Range начала (условный, так как включает и текст по Ribbon при полностью развёрнутом окне), и условный конец Application.ActiveWindow.RangeFromPoint(1920,1024). Плюс, вычислять номера страниц, определять для всех страниц, число строк на них. То есть вычислить абсолютные номера строк. И уже тут определяться - входит ли ваша 500 строка в видимый диапазон или нет.
Успехов.


Сообщение отредактировал anvg - Пятница, 18.08.2017, 14:32
 
Ответить
Сообщение
Цитата
какой аналог строки Экселя - есть в Ворде ?

Формально аналога нет, как и нет аналога VisbileRange (хотя можете поискать, а вдруг?!).
Можно получить номер строки только на странице Range.Information(wdFirstCharacterLineNumber) при учёте некоторых условий детали. Можно получить через Application.ActiveWindow.RangeFromPoint(1,1) условный видимый односимвольный Range начала (условный, так как включает и текст по Ribbon при полностью развёрнутом окне), и условный конец Application.ActiveWindow.RangeFromPoint(1920,1024). Плюс, вычислять номера страниц, определять для всех страниц, число строк на них. То есть вычислить абсолютные номера строк. И уже тут определяться - входит ли ваша 500 строка в видимый диапазон или нет.
Успехов.

Автор - anvg
Дата добавления - 18.08.2017 в 14:27
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!