Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Особый колонтитул только для последней страницы, вставить доп. текст в колонтитул последней стироки
 
Приветствую, форумчане!

Решил и я потрепать ваши умы, хватит только читать =)
Собственно задача - на последней странице генерируемого документа (количество страниц варьируется от 1 до 20) нужно чтобы автоматически добавлялась надпись "Исполнитель: Петров А.И."<br><br><br><br> (после "Исполнитель: Петров А.И." обязательно должно быть 4 переноса строки).

Прогуглив, нашел полурешение, но не могу подстроить под себя ввиду отсутствия знаний.
А нашел вот что:

В колонтитуле прописать функцию:
Код
=ЕСЛИ(ЛИСТ()=СТРАНИЦЫ;"Исполнитель: Петров А.И.";""),

где "СТРАНИЦЫ" - это присовенное имя =ПОЛУЧИТЬ.ДОКУМЕНТ(50+0*ТДАТА()) - выдает общее количество страниц

*/Первоисточник
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=8&TID=8069&...
*/

Но оказалось что в колонтитул нельзя вставить функцию, и его редактировать можно только через vba.
Нашел макрос:
Код
Sub FooterFrom()'Update 20140318
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection.Range("A1")
Set WorkRng = Application.InputBox("Range (single cell)", xTitleId, WorkRng.Address, Type:=8)
Application.ActiveSheet.PageSetup.LeftFooter = WorkRng.Range("A1").Value
End Sub

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

Заранее благодарю.
 
Цитата
olegpetr написал: но каждый раз нужно указывать ячейку, из которой брать данные...
...чтобы он автоматически проверял является ли страница последней и вставлял в нее подпись.
Не понятно, что же все таки нужно? Толи подставлять ячейку, из которой брать данные, толи проверять является ли страница последней
Согласие есть продукт при полном непротивлении сторон.
 
Адрес верхней левой ячейки последней страницы (сверху вниз) текущего листа:
Код
msgbox activesheet.HPageBreaks(activesheet.HPageBreaks.Count).Location.Address

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
Sanja написал:
Не понятно, что же все таки нужно?
Наверное, ТС-у нужно создать  две темы в соответствии с правилами форума: одна тема - один вопрос. Тогда и последнюю страницу получится найти, и в колонтитул вписать то, что нужно.  :)
По теме: Вместо ссылки на ячейку (что в Вашем макросе в первом сообщении) можно просто написать: "Вася Иванов", и тогда не нужно будет каждый раз указывать ячейку, в колонтитуле будет "Вася Иванов". Ну а если это не сработает, покажите это в файле-примере, чтобы можно было понять где и как и что не срабатывает  
 
Извиняюсь за задержку с ответами, на работе завал

Да, видно ходом своих мыслей запутал всех и сам запутался
Цитата
Sanja написал:
Не понятно, что же все таки нужно? Толи подставлять ячейку, из которой брать данные, толи проверять является ли страница последней
Проверить, является ли страница последней. И далее вставить в нижний колонтитул только этой страницы надпись "Вася Иванов". Подставлять данные из ячейки не нужно, это просто ход мысли описал зачем-то.

Цитата
JayBhagavan написал:
Адрес верхней левой ячейки последней страницы (сверху вниз) текущего листа:
1msgbox activesheet.HPageBreaks(activesheet.HPageBreaks.Count).Location.Address
Хм, отличный вариант! А как будет выглядеть, если нужна нижняя левая ячейка последней страницы? В принципе можно эту подпись написать не в колонтитуле, а на последней строке последней страницы.

Цитата
_Igor_61 написал:
Адрес верхней левой ячейки последней страницы (сверху вниз) текущего листа:Код ? 1msgbox activesheet.HPageBreaks(activesheet.HPageBreaks.Count).Location.Address
В этом случае надпись будет же на всех страницах, а нужно только на последней. С редактированием (как и с ручным созданием) макросов к сожалению не знаком. Если подтолкнете или направите, что именно и на что подправить - буду признателен.
 
Цитата
olegpetr написал: нижняя левая ячейка последней страницы?
Код
cells.SpecialCells(xlCellTypeLastCell).EntireRow.Cells(1)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Большое спасибо за помощь!
Цитата
JayBhagavan написал:
cells.SpecialCells(xlCellTypeLastCell).EntireRow.Cells(1)
Если я правильно понял, вот такой макрос должен выделять нужную мне ячейку (левая ячейка, последняя строка, последняя страница):
Код
Sub Макрос2()
    Cells.SpecialCells(xlCellTypeLastCell).EntireRow.Cells(1).Select
End Sub

Но получается, что он выделяет крайнюю левую ячейку самой нижней строки, в которой были введены какие-либо значения.

Я что-то сделал не так?
Изменено: olegpetr - 12 Дек 2018 14:42:50 (Не приложил файл)
 
А нужно, чтобы выделялась вот эта ячейка (выделена красным):
Excel.jpg (68.78 КБ)
Страницы: 1
Читают тему (гостей: 1)
Наверх