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

Вход

Регистрация

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

 

= Мир MS Excel/Счёт страниц на листе - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Счёт страниц на листе (Макросы/Sub)
Счёт страниц на листе
gling Дата: Воскресенье, 14.06.2020, 00:00 | Сообщение № 1
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2524
Репутация: 678 ±
Замечаний: 0% ±

2010
Здравствуйте участники форума!
Решил создать тему навеянную вопросом из другой темы. Не нашел по всем предлагаемым ссылкам полного варианта № страницы, по этому "сляпал" свой вариант, который меняет номера страниц в соответствии с настройкой параметра страниц на листе: вниз, затем вправо или вправо, затем вниз. Счёт страниц вроде работает правильно, конечно нужно еще потестить, но вот ВсегоСтраниц работает не всегда правильно. В приложенном файле заполнено 3 страницы на листе, в колонтитулах считает правильно 3 страницы всего, а вот мой "ляп" выдаёт 4 страницы. Может кто подскажет как проверить последнею страницу на заполненность и если она пустая минусонуть 1 от общего количества Страниц. А может у кого есть другой вариант решения. Пробовал вытащить из колонтитулов, у меня не получилось, там какое то своё преобразование происходит, а я не такой уж спец так глубоко копать. Не судите строго, это мои первые UDF не написанные, а именно "сляпанные". Не знаю как откроется у вас файл, но чтобы видеть и колонтитулы лучше открыть лист в режиме Разметки страниц. А может и по оптимизации UDF Страницы будут предложения, а то уж больно много строк я там "наляпал". Основной вопрос конечно устранить разницу в счёте "всего страниц". Остальное на любителя. Буду благодарен за любые предложения.
К сообщению приложен файл: 2793265.xlsm (18.4 Kb)


ЯД-41001506838083

Сообщение отредактировал gling - Воскресенье, 14.06.2020, 00:15
 
Ответить
СообщениеЗдравствуйте участники форума!
Решил создать тему навеянную вопросом из другой темы. Не нашел по всем предлагаемым ссылкам полного варианта № страницы, по этому "сляпал" свой вариант, который меняет номера страниц в соответствии с настройкой параметра страниц на листе: вниз, затем вправо или вправо, затем вниз. Счёт страниц вроде работает правильно, конечно нужно еще потестить, но вот ВсегоСтраниц работает не всегда правильно. В приложенном файле заполнено 3 страницы на листе, в колонтитулах считает правильно 3 страницы всего, а вот мой "ляп" выдаёт 4 страницы. Может кто подскажет как проверить последнею страницу на заполненность и если она пустая минусонуть 1 от общего количества Страниц. А может у кого есть другой вариант решения. Пробовал вытащить из колонтитулов, у меня не получилось, там какое то своё преобразование происходит, а я не такой уж спец так глубоко копать. Не судите строго, это мои первые UDF не написанные, а именно "сляпанные". Не знаю как откроется у вас файл, но чтобы видеть и колонтитулы лучше открыть лист в режиме Разметки страниц. А может и по оптимизации UDF Страницы будут предложения, а то уж больно много строк я там "наляпал". Основной вопрос конечно устранить разницу в счёте "всего страниц". Остальное на любителя. Буду благодарен за любые предложения.

Автор - gling
Дата добавления - 14.06.2020 в 00:00
krosav4ig Дата: Воскресенье, 14.06.2020, 02:07 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
[vba]
Код
Public Function ВсегоСтраниц()
    ВсегоСтраниц = Application.Caller.Worksheet.PageSetup.Pages.Count
End Function
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте
[vba]
Код
Public Function ВсегоСтраниц()
    ВсегоСтраниц = Application.Caller.Worksheet.PageSetup.Pages.Count
End Function
[/vba]

Автор - krosav4ig
Дата добавления - 14.06.2020 в 02:07
gling Дата: Воскресенье, 14.06.2020, 02:26 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2524
Репутация: 678 ±
Замечаний: 0% ±

2010
Здравствуйте.
Да я тоже к этому пришел, получилось так[vba]
Код
Public Function ВсегоСтраниц()
        ВсегоСтраниц = ActiveSheet.PageSetup.Pages.Count
End Function
[/vba] Что лучше не знаю. Взял здесь. Разобрался как работает и удалил мне не нужное. Получилось что всё удалил и оставил одну строчку. Но про номера страниц там наврали, или я не понял их объяснение. Конкретный номер страницы они не находят, находят только количество страниц на листе.

krosav4ig, Спасибо за подсказку.
Не по теме конечно вопрос, но обязательно ли писать Application.Caller. ведь и без этого работает?


ЯД-41001506838083

Сообщение отредактировал gling - Воскресенье, 14.06.2020, 02:52
 
Ответить
СообщениеЗдравствуйте.
Да я тоже к этому пришел, получилось так[vba]
Код
Public Function ВсегоСтраниц()
        ВсегоСтраниц = ActiveSheet.PageSetup.Pages.Count
End Function
[/vba] Что лучше не знаю. Взял здесь. Разобрался как работает и удалил мне не нужное. Получилось что всё удалил и оставил одну строчку. Но про номера страниц там наврали, или я не понял их объяснение. Конкретный номер страницы они не находят, находят только количество страниц на листе.

krosav4ig, Спасибо за подсказку.
Не по теме конечно вопрос, но обязательно ли писать Application.Caller. ведь и без этого работает?

Автор - gling
Дата добавления - 14.06.2020 в 02:26
krosav4ig Дата: Воскресенье, 14.06.2020, 03:30 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
ActiveSheet - активный лист
Application.Caller - в данном случае, ячейка, из которой вызывается функция

если на листе задана несплошная область печати, то универсального с определением номера страницы будет полная печалька


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеActiveSheet - активный лист
Application.Caller - в данном случае, ячейка, из которой вызывается функция

если на листе задана несплошная область печати, то универсального с определением номера страницы будет полная печалька

Автор - krosav4ig
Дата добавления - 14.06.2020 в 03:30
Kuzmich Дата: Воскресенье, 14.06.2020, 13:59 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Цитата
В приложенном файле заполнено 3 страницы на листе

[vba]
Код
ВсегоСтраниц = ExecuteExcel4Macro("GET.DOCUMENT(50)")
[/vba]
 
Ответить
Сообщение
Цитата
В приложенном файле заполнено 3 страницы на листе

[vba]
Код
ВсегоСтраниц = ExecuteExcel4Macro("GET.DOCUMENT(50)")
[/vba]

Автор - Kuzmich
Дата добавления - 14.06.2020 в 13:59
krosav4ig Дата: Воскресенье, 14.06.2020, 16:59 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Kuzmich, речь же об UDF, а XLM в UDF не работают
так бы и позиции разрывов страниц можно было бы получать с помощью
Код
GET.DOCUMENT(45)
Код
GET.DOCUMENT(46)
только не стоит пренебрегать вторым аргументом - имя книги и листа в формате
Код
[книга.xlsx]Лист1
ибо чревато


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Воскресенье, 14.06.2020, 17:00
 
Ответить
СообщениеKuzmich, речь же об UDF, а XLM в UDF не работают
так бы и позиции разрывов страниц можно было бы получать с помощью
Код
GET.DOCUMENT(45)
Код
GET.DOCUMENT(46)
только не стоит пренебрегать вторым аргументом - имя книги и листа в формате
Код
[книга.xlsx]Лист1
ибо чревато

Автор - krosav4ig
Дата добавления - 14.06.2020 в 16:59
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Счёт страниц на листе (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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