Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Главное меню

Разметка страниц для печати.

Автор omon3, 20.11.2015, 15:12

« назад - далее »

omon3

В общем есть документ в excel нужно автоматически сделать так чтобы лист для печати был размером 62 строки. Я в excele немного нуб поэтому не судите строго)Долго ковырялся в параметрах печати, но все равно все съезжает

NooBasTiK


omon3

#2
Это конечно хорошо, что можно вручную двигать линии, но иногда бывает так что передвинув на одной странице область печати и сделав 62 линии ячеек - на остальных получается 63, 64 и.т.д.. Можно ли ввести параметр ширины и высоты листа по кол-ву ячеек. (50 на 50 ячеек например)

omon3

Например вот этот документ нельзя сделать по 62 линии в каждом листе, не передвинув 150 раз.

Pelena

Можно макросом
Sub PageBreak()
    r = Int(Range(ActiveSheet.PageSetup.PrintArea).Rows.Count / 62)
    For i = 1 To r
        Set ActiveSheet.HPageBreaks(i).Location = Range("A" & i * 62 + 1)
    Next i
End Sub

omon3

#5
А можно чтобы ещё  и столбиков было по L. И этот макрос для xlsx будет работать?

Pelena

В xlsx макросов быть не может. Сохраняйте либо в xlsm, либо в xlsb
Про "по L" не поняла. L чему-то равно? Или до столбца L?

omon3

#7
До L столбца (включая L).
"В xlsx макросов быть не может" - мм а как же функция макросов в документах xlsx, ведь она активна? Мне желательно чтобы это все работало в xlsx.

Pelena

Добавляем ещё цикл для столбцов
Sub PageBreak()
    r = Int(Range(ActiveSheet.PageSetup.PrintArea).Rows.Count / 62)
    c = Int(Range(ActiveSheet.PageSetup.PrintArea).Columns.Count / 12)
    For i = 1 To r
        Set ActiveSheet.HPageBreaks(i).Location = Range("A" & i * 62 + 1)
    Next i
    For i = 1 To c
        Set ActiveSheet.VPageBreaks(i).Location = Cells(1, i * 12 + 1)
    Next i
End Sub

Вы можете работать с макросами в файле xlsx, но сохранить их в этом формате Вы не сможете. Что мешает сохранить в xlsm?

omon3

Буду работать в xlsm. Спасибо большое за помощь. Попытаюсь запустить макрос

omon3

#10
Цитата - это часть текста, необходимая для пояснения дальнейшего текста, а не условный рефлекс нажатия на кнопку [МОДЕРАТОР]
в цитате был код необходимый для дальнейшего текста, но у кого то сработал условный рефлекс завышенного ЭГО и этот кто то решил выпендриться [omon3]
У кого-то сработал безусловный рефлекс самозащиты.
Еще раз - цитата - это не целое сообщение, которое не разъясняет, а затрудняет чтение
[МОДЕРАТОР]

Pelena, не всегда получается запустить макрос. Ексель почему-то не всегда себя ведет предсказуемо и периодически выскакивает ошибка(1004). Иногда с этой ошибкой разметка рвставляется а иногда нет

Pelena

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

omon3

Цитата: Pelena от 30.11.2015, 18:18
Макрос создавался для приложенного примера, опирается на заданную область печати. В тех файлах, где выпадает ошибка, задана область печати?
Я кажется понял в чем проблема - если рабочая область печати меньше чем описана в макросе - то появляется ошибка, т.е. макрос только уменьшает область, но не увеличивает

Pelena

Если область печати не задаётся вручную для каждого листа, то надо по-другому определять заполненные ячейки.
Посмотрите здесь
http://www.excel-vba.ru/chto-umeet-excel/kak-opredelit-poslednyuyu-yachejku-na-liste-cherez-vba/