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

Вход

Регистрация

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

 

= Мир MS Excel/верхний колонтитул справа с выравниваем по левому краю - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
верхний колонтитул справа с выравниваем по левому краю
grh1 Дата: Воскресенье, 30.11.2025, 09:13 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 241
Репутация: 0 ±
Замечаний: 0% ±

2019
Добрый день, уважаемые знатоки excel,
У меня такой вопрос - возможно ли в эксель ввести колонтитул из нескольких строк в правую часть, но выравнивание сделать по левому краю.
Например такие слова:

Вася
Петрович
Висилиса

Если с помощью кода сделать возможно, то пожалуйста выложите строки кода.
Если же невозможно, то посоветуйте как быть. Вставка скриншота очень понижает качество при печати, так как ниже колонтитула идет таблица набранная с четким шрифтом, а скриншот расплывчат получается (не сильно, но заметно в сравнении).
Спасибо за помощь.


Vadym Gorokh
 
Ответить
СообщениеДобрый день, уважаемые знатоки excel,
У меня такой вопрос - возможно ли в эксель ввести колонтитул из нескольких строк в правую часть, но выравнивание сделать по левому краю.
Например такие слова:

Вася
Петрович
Висилиса

Если с помощью кода сделать возможно, то пожалуйста выложите строки кода.
Если же невозможно, то посоветуйте как быть. Вставка скриншота очень понижает качество при печати, так как ниже колонтитула идет таблица набранная с четким шрифтом, а скриншот расплывчат получается (не сильно, но заметно в сравнении).
Спасибо за помощь.

Автор - grh1
Дата добавления - 30.11.2025 в 09:13
Pelena Дата: Воскресенье, 30.11.2025, 10:25 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19582
Репутация: 4649 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Встроенного такого инструмента нет.
Можно попробовать такой код
[vba]
Код
Sub СместитьПравыйКолонтитулВлево()
    With ActiveSheet.PageSetup
        t1 = "Вася"
        t2 = "Петрович"
        t3 = "Василиса"
        totalcount = 30
        .RightHeader = "&""Courier""&10" & t1 & WorksheetFunction.Rept(Chr(160), totalcount - Len(t1)) & Chr(10) & _
        t2 & WorksheetFunction.Rept(Chr(160), totalcount - Len(t2)) & Chr(10) & _
        t3 & WorksheetFunction.Rept(Chr(160), totalcount - Len(t3))
        
    End With
End Sub
[/vba]
То есть мы программно добавляем справа от текста неразрывные пробелы, их количество зависит от длины текста
ВАЖНО! Шрифт должен быть моноширинным. В примере это Courier. Можно Consolas или Aptos Mono или любой другой МОНОШИРИННЫЙ шрифт.
10 - это размер шрифта, тоже можно изменить
30 - это кол-во символов от правого края листа, тоже можно изменить, но без фанатизма, т.к. есть ограничение на общую длину строки


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Встроенного такого инструмента нет.
Можно попробовать такой код
[vba]
Код
Sub СместитьПравыйКолонтитулВлево()
    With ActiveSheet.PageSetup
        t1 = "Вася"
        t2 = "Петрович"
        t3 = "Василиса"
        totalcount = 30
        .RightHeader = "&""Courier""&10" & t1 & WorksheetFunction.Rept(Chr(160), totalcount - Len(t1)) & Chr(10) & _
        t2 & WorksheetFunction.Rept(Chr(160), totalcount - Len(t2)) & Chr(10) & _
        t3 & WorksheetFunction.Rept(Chr(160), totalcount - Len(t3))
        
    End With
End Sub
[/vba]
То есть мы программно добавляем справа от текста неразрывные пробелы, их количество зависит от длины текста
ВАЖНО! Шрифт должен быть моноширинным. В примере это Courier. Можно Consolas или Aptos Mono или любой другой МОНОШИРИННЫЙ шрифт.
10 - это размер шрифта, тоже можно изменить
30 - это кол-во символов от правого края листа, тоже можно изменить, но без фанатизма, т.к. есть ограничение на общую длину строки

Автор - Pelena
Дата добавления - 30.11.2025 в 10:25
grh1 Дата: Воскресенье, 30.11.2025, 11:15 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 241
Репутация: 0 ±
Замечаний: 0% ±

2019
Pelena, добрый день
Экспериментирую с Вашим кодом, так как мне нужен только Verdana шрифт... Подгоняю изменяя значение "30" +/- 1-2 пункта. К сожалению немного не хватает точности. Если бы можно было поставить например 30.5 или 30.6 или 29.3 было бы отлично, но эксель принимает только точное (не дробное) число. По результатам - сообщу. Спасибо за помощь.


Vadym Gorokh
 
Ответить
СообщениеPelena, добрый день
Экспериментирую с Вашим кодом, так как мне нужен только Verdana шрифт... Подгоняю изменяя значение "30" +/- 1-2 пункта. К сожалению немного не хватает точности. Если бы можно было поставить например 30.5 или 30.6 или 29.3 было бы отлично, но эксель принимает только точное (не дробное) число. По результатам - сообщу. Спасибо за помощь.

Автор - grh1
Дата добавления - 30.11.2025 в 11:15
grh1 Дата: Воскресенье, 30.11.2025, 13:22 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 241
Репутация: 0 ±
Замечаний: 0% ±

2019
Pelena, все подгоняется хорошо, но возник вопрос - например слово "Василиса" нужно опустить на одну строку ниже и сделать размер шрифта 13. Мне создать новую тему или знатоки могут здесь ответить? Спасибо за ответ.


Vadym Gorokh
 
Ответить
СообщениеPelena, все подгоняется хорошо, но возник вопрос - например слово "Василиса" нужно опустить на одну строку ниже и сделать размер шрифта 13. Мне создать новую тему или знатоки могут здесь ответить? Спасибо за ответ.

Автор - grh1
Дата добавления - 30.11.2025 в 13:22
Pelena Дата: Воскресенье, 30.11.2025, 13:51 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 19582
Репутация: 4649 ±
Замечаний: ±

Excel 365 & Mac Excel
для перевода строки используйте ещё один Chr(10). Как изменить шрифт, я писала выше. Но надо учесть, что при изменении размера шрифта размер пробелов тоже меняется, придется подгонять заново.
[vba]
Код
Sub СместитьПравыйКолонтитулВлево()
    With ActiveSheet.PageSetup
        t1 = "Вася"
        t2 = "Петрович"
        t3 = "Василиса"
        totalcount = 30
        .RightHeader = "&""Courier""&10" & t1 & WorksheetFunction.Rept(Chr(160), totalcount - Len(t1)) & Chr(10) & _
        t2 & WorksheetFunction.Rept(Chr(160), totalcount - Len(t2)) & Chr(10) & Chr(10) & _
        "&""Courier""&13" & t3 & WorksheetFunction.Rept(Chr(160), totalcount - Len(t3))
        
    End With
End Sub
[/vba]
либо попробовать размер пробелов не менять, но без подгонки всё равно не обойтись
[vba]
Код
"&""Courier""&13" & t3 & "&""Courier""&10" & WorksheetFunction.Rept(Chr(160), totalcount - Len(t3))
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщениедля перевода строки используйте ещё один Chr(10). Как изменить шрифт, я писала выше. Но надо учесть, что при изменении размера шрифта размер пробелов тоже меняется, придется подгонять заново.
[vba]
Код
Sub СместитьПравыйКолонтитулВлево()
    With ActiveSheet.PageSetup
        t1 = "Вася"
        t2 = "Петрович"
        t3 = "Василиса"
        totalcount = 30
        .RightHeader = "&""Courier""&10" & t1 & WorksheetFunction.Rept(Chr(160), totalcount - Len(t1)) & Chr(10) & _
        t2 & WorksheetFunction.Rept(Chr(160), totalcount - Len(t2)) & Chr(10) & Chr(10) & _
        "&""Courier""&13" & t3 & WorksheetFunction.Rept(Chr(160), totalcount - Len(t3))
        
    End With
End Sub
[/vba]
либо попробовать размер пробелов не менять, но без подгонки всё равно не обойтись
[vba]
Код
"&""Courier""&13" & t3 & "&""Courier""&10" & WorksheetFunction.Rept(Chr(160), totalcount - Len(t3))
[/vba]

Автор - Pelena
Дата добавления - 30.11.2025 в 13:51
grh1 Дата: Воскресенье, 30.11.2025, 14:58 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 241
Репутация: 0 ±
Замечаний: 0% ±

2019
Pelena, через totalcount вообще стало супер - теперь не нужно подгонять по размеру слова. Единственное - если вместо t3 например создать переменную [vba]
Код
dt = Day(Date) & "." & monthNames(Month(Date)) & " " & Year(Date)
[/vba] то последняя строчка в коде будет:
"&""Courier""&13" & dt & WorksheetFunction.Rept(Chr(160), totalcount - Len(t3))

Правильно я понимаю или ошибаюсь? (Последняя 4 строка - это сегодняшняя дата должна быть).


Vadym Gorokh
 
Ответить
СообщениеPelena, через totalcount вообще стало супер - теперь не нужно подгонять по размеру слова. Единственное - если вместо t3 например создать переменную [vba]
Код
dt = Day(Date) & "." & monthNames(Month(Date)) & " " & Year(Date)
[/vba] то последняя строчка в коде будет:
"&""Courier""&13" & dt & WorksheetFunction.Rept(Chr(160), totalcount - Len(t3))

Правильно я понимаю или ошибаюсь? (Последняя 4 строка - это сегодняшняя дата должна быть).

Автор - grh1
Дата добавления - 30.11.2025 в 14:58
Pelena Дата: Воскресенье, 30.11.2025, 15:03 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 19582
Репутация: 4649 ±
Замечаний: ±

Excel 365 & Mac Excel
"&""Courier""&13" & dt & WorksheetFunction.Rept(Chr(160), totalcount - Len(dt))

dt можно короче написать
[vba]
Код
dt=Format(Date,"DD MMMM YYYY")
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение"&""Courier""&13" & dt & WorksheetFunction.Rept(Chr(160), totalcount - Len(dt))

dt можно короче написать
[vba]
Код
dt=Format(Date,"DD MMMM YYYY")
[/vba]

Автор - Pelena
Дата добавления - 30.11.2025 в 15:03
grh1 Дата: Воскресенье, 30.11.2025, 16:18 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 241
Репутация: 0 ±
Замечаний: 0% ±

2019
Pelena, я по ходу вообще затупил... Не получается вставить вместо t7 сегодняшнюю дату 13 шрифтом.
То становится дата гигантской (одна буква на половину листа), то ошибка вылетает.
Плюс у меня таблица загруженная с файла CSV и ее постоянно нужно отодвигать на 7-9 строк вниз, чтобы видеть колонтитул.
Прям замучился с этим колонтитулом.
Помогите с датой пожалуйста.
Файл прикрепляю
К сообщению приложен файл: pelena_pomoshh.xlsm (28.4 Kb)


Vadym Gorokh
 
Ответить
СообщениеPelena, я по ходу вообще затупил... Не получается вставить вместо t7 сегодняшнюю дату 13 шрифтом.
То становится дата гигантской (одна буква на половину листа), то ошибка вылетает.
Плюс у меня таблица загруженная с файла CSV и ее постоянно нужно отодвигать на 7-9 строк вниз, чтобы видеть колонтитул.
Прям замучился с этим колонтитулом.
Помогите с датой пожалуйста.
Файл прикрепляю

Автор - grh1
Дата добавления - 30.11.2025 в 16:18
Pelena Дата: Воскресенье, 30.11.2025, 20:15 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 19582
Репутация: 4649 ±
Замечаний: ±

Excel 365 & Mac Excel
Как-то так
К сообщению приложен файл: 0603224.xlsm (28.3 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеКак-то так

Автор - Pelena
Дата добавления - 30.11.2025 в 20:15
grh1 Дата: Воскресенье, 30.11.2025, 21:02 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 241
Репутация: 0 ±
Замечаний: 0% ±

2019
Pelena, спасибо большое.
И последний вопрос - никак нельзя кодом сделать так, чтобы колонтитул был только на первом листе?
Спасибо большое за помощь.


Vadym Gorokh
 
Ответить
СообщениеPelena, спасибо большое.
И последний вопрос - никак нельзя кодом сделать так, чтобы колонтитул был только на первом листе?
Спасибо большое за помощь.

Автор - grh1
Дата добавления - 30.11.2025 в 21:02
Pelena Дата: Воскресенье, 30.11.2025, 22:24 | Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 19582
Репутация: 4649 ±
Замечаний: ±

Excel 365 & Mac Excel
чтобы колонтитул был только на первом листе

а зачем тогда вообще колонтитул? Проще вывести нужный текст в ячейках перед таблицей. Нет?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
чтобы колонтитул был только на первом листе

а зачем тогда вообще колонтитул? Проще вывести нужный текст в ячейках перед таблицей. Нет?

Автор - Pelena
Дата добавления - 30.11.2025 в 22:24
grh1 Дата: Воскресенье, 30.11.2025, 22:43 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 241
Репутация: 0 ±
Замечаний: 0% ±

2019
а зачем тогда вообще колонтитул? Проще вывести нужный текст в ячейках перед таблицей. Нет?

у меня есть ОСНОВНОЙ макрос, который преобразовывает файл CSV в нужный мне вид. Для печати нехватает только шапки к этой таблице, вот и хочу автоматизировать и этот процесс, чтобы создавалась шапка в виде колонтитула, так как шапка будет сложная - в колонтитуле СЛЕВА СВЕРХУ небольшой скриншот эмблемы предприятия, ниже в этом же блоке пять строк текста размером 12, а потом заполняю блок СПРАА СВЕРХУ (который Вы сделали), но шрифт 9. Если удастся создать макросом такую шапку, то к основному своему макросу хотелось бы прикрутить и это...
Понимаю, что как-то мудрёно получается - пишу эти строки, а сам себе думаю: "а не дурак ли я?" Ну уже пробую, а там как получится.
Может действительно проще сделать шабку НАДПИСЬЮ, да не морочить ни себе ни людям голову.
Но в любом случае спасибо за помощь.
Всего доброго и хорошего Вам.
Спокойной ночи. Тему закрываем.


Vadym Gorokh
 
Ответить
Сообщение
а зачем тогда вообще колонтитул? Проще вывести нужный текст в ячейках перед таблицей. Нет?

у меня есть ОСНОВНОЙ макрос, который преобразовывает файл CSV в нужный мне вид. Для печати нехватает только шапки к этой таблице, вот и хочу автоматизировать и этот процесс, чтобы создавалась шапка в виде колонтитула, так как шапка будет сложная - в колонтитуле СЛЕВА СВЕРХУ небольшой скриншот эмблемы предприятия, ниже в этом же блоке пять строк текста размером 12, а потом заполняю блок СПРАА СВЕРХУ (который Вы сделали), но шрифт 9. Если удастся создать макросом такую шапку, то к основному своему макросу хотелось бы прикрутить и это...
Понимаю, что как-то мудрёно получается - пишу эти строки, а сам себе думаю: "а не дурак ли я?" Ну уже пробую, а там как получится.
Может действительно проще сделать шабку НАДПИСЬЮ, да не морочить ни себе ни людям голову.
Но в любом случае спасибо за помощь.
Всего доброго и хорошего Вам.
Спокойной ночи. Тему закрываем.

Автор - grh1
Дата добавления - 30.11.2025 в 22:43
Pelena Дата: Воскресенье, 30.11.2025, 22:48 | Сообщение № 13
Группа: Админы
Ранг: Местный житель
Сообщений: 19582
Репутация: 4649 ±
Замечаний: ±

Excel 365 & Mac Excel
Дело в том, что сделать колонтитул только на первой странице можно. Достаточно в коде заменить
[vba]
Код
.RightHeader =
[/vba]
на
[vba]
Код
.FirstPage.RightHeader.Text =
[/vba]
а вот верхнее поле, которое я сделала 4 см, будет действовать на все листы.
Тогда придётся поле уменьшать, а таблицу на первом листе сдвигать вниз.
Решайте, что Вам проще реализовать


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеДело в том, что сделать колонтитул только на первой странице можно. Достаточно в коде заменить
[vba]
Код
.RightHeader =
[/vba]
на
[vba]
Код
.FirstPage.RightHeader.Text =
[/vba]
а вот верхнее поле, которое я сделала 4 см, будет действовать на все листы.
Тогда придётся поле уменьшать, а таблицу на первом листе сдвигать вниз.
Решайте, что Вам проще реализовать

Автор - Pelena
Дата добавления - 30.11.2025 в 22:48
grh1 Дата: Воскресенье, 30.11.2025, 22:59 | Сообщение № 14
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 241
Репутация: 0 ±
Замечаний: 0% ±

2019
Pelena, спасибо за эту .FirstPage.RightHeader.Text = подсказку.

Тогда придётся поле уменьшать, а таблицу на первом листе сдвигать вниз.

Да получается уж совсем муторно... Овчинка выделки наверно не стоит. Буду думать... если что, то обращусь к Вам за помощью (с Вашего разрешения конечно).
Всего доброго Вам.
И еще раз спасибо.


Vadym Gorokh
 
Ответить
СообщениеPelena, спасибо за эту .FirstPage.RightHeader.Text = подсказку.

Тогда придётся поле уменьшать, а таблицу на первом листе сдвигать вниз.

Да получается уж совсем муторно... Овчинка выделки наверно не стоит. Буду думать... если что, то обращусь к Вам за помощью (с Вашего разрешения конечно).
Всего доброго Вам.
И еще раз спасибо.

Автор - grh1
Дата добавления - 30.11.2025 в 22:59
  • Страница 1 из 1
  • 1
Поиск:

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