Добрый день! Столкнулся с проблемой. Необходимо печатать в большом количестве бланки и необходимо это немного автоматизировать. Уже есть макрос и лист с функцией впр, для формирования бланков, но макрос не совсем подходит так, как необходимо выбирать строки которые будут печататься, их может быть и больше десяти. Как его адаптировать не пойму . Прилагаю файл для примера.
Добрый день! Столкнулся с проблемой. Необходимо печатать в большом количестве бланки и необходимо это немного автоматизировать. Уже есть макрос и лист с функцией впр, для формирования бланков, но макрос не совсем подходит так, как необходимо выбирать строки которые будут печататься, их может быть и больше десяти. Как его адаптировать не пойму . Прилагаю файл для примера.Allexsin
Два вопроса. 1) почему, простите, бланк картинкой? 2) зачем там нерабочая формула, ежели всё равно макрос крутится? Написать нормальный макрос — дело 10 минут, но не под картинку жеж в самом деле...
Два вопроса. 1) почему, простите, бланк картинкой? 2) зачем там нерабочая формула, ежели всё равно макрос крутится? Написать нормальный макрос — дело 10 минут, но не под картинку жеж в самом деле...StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Картинка это форма, картинку можно удалить. Формула рабочая, если на листе "макет" в верхнем углу где стр№ указать цифру, которая будет соответствовать номеру строки на листе "список", для этого вместо "х" нужно пронумеровать строки, то все станет понятно. Т.е. выбрав ту или иную строку мы получаем бланк с разными данными. Так же нужно нажать сочетание клавиш ctr+q (английская раскладка), то он будет печатать по порядку подменяя номера строк. Мне это не подходит. Приложил файл который пытался изменить поэтому запутал, прилагаю исходный. А про 10 минут на макрос, возможно, но я не спец в этом, поэтому и обратился за помощью.
Картинка это форма, картинку можно удалить. Формула рабочая, если на листе "макет" в верхнем углу где стр№ указать цифру, которая будет соответствовать номеру строки на листе "список", для этого вместо "х" нужно пронумеровать строки, то все станет понятно. Т.е. выбрав ту или иную строку мы получаем бланк с разными данными. Так же нужно нажать сочетание клавиш ctr+q (английская раскладка), то он будет печатать по порядку подменяя номера строк. Мне это не подходит. Приложил файл который пытался изменить поэтому запутал, прилагаю исходный. А про 10 минут на макрос, возможно, но я не спец в этом, поэтому и обратился за помощью.Allexsin
Впрочем, как упражнение на SpecialCells сойдёт... Ловите, помечать можно любым символом. [vba]
Код
Sub AutoPrint()
Dim i As Long
With Worksheets(2) With .Range(.Cells(2, 1), .Cells(.Cells(Rows.Count, 1).End(xlUp).Row, 1)) For i = 1 To .SpecialCells(xlCellTypeConstants).Count Worksheets(1).Cells(20, 2).Value = .SpecialCells(xlCellTypeConstants)(i).Offset(, 2).Value Worksheets(1).Cells(23, 3).Value = .SpecialCells(xlCellTypeConstants)(i).Offset(, 4).Value Worksheets(1).Cells(26, 3).Value = .SpecialCells(xlCellTypeConstants)(i).Offset(, 5).Value Worksheets(1).Cells(2, 9).Value = "ñòð. " & i Worksheets(1).PrintOut From:=1, to:=1, Copies:=1, Collate:=True, IgnorePrintAreas:=False Next i End With End With
End Sub
[/vba]
Впрочем, как упражнение на SpecialCells сойдёт... Ловите, помечать можно любым символом. [vba]
Код
Sub AutoPrint()
Dim i As Long
With Worksheets(2) With .Range(.Cells(2, 1), .Cells(.Cells(Rows.Count, 1).End(xlUp).Row, 1)) For i = 1 To .SpecialCells(xlCellTypeConstants).Count Worksheets(1).Cells(20, 2).Value = .SpecialCells(xlCellTypeConstants)(i).Offset(, 2).Value Worksheets(1).Cells(23, 3).Value = .SpecialCells(xlCellTypeConstants)(i).Offset(, 4).Value Worksheets(1).Cells(26, 3).Value = .SpecialCells(xlCellTypeConstants)(i).Offset(, 5).Value Worksheets(1).Cells(2, 9).Value = "ñòð. " & i Worksheets(1).PrintOut From:=1, to:=1, Copies:=1, Collate:=True, IgnorePrintAreas:=False Next i End With End With
Спасибо, но не то . При запуске макроса он запускает печать как бешеный и печатает большее количество бланков, чем есть для них значений. На выставленный символ в столбце "выбор" на листе "список" не реагирует. Основной смысл макроса чтобы выполнялась печать только тех строк которые помечены символом "х". Указание номера страницы бланка, выведенной не принципиально.
Спасибо, но не то . При запуске макроса он запускает печать как бешеный и печатает большее количество бланков, чем есть для них значений. На выставленный символ в столбце "выбор" на листе "список" не реагирует. Основной смысл макроса чтобы выполнялась печать только тех строк которые помечены символом "х". Указание номера страницы бланка, выведенной не принципиально.Allexsin
Странно... Немного переделал без нумерации, прогнал — печатает только Иванова и Сидорова, как и нужно. [vba]
Код
Sub AutoPrint()
Dim cell As Range
With Worksheets(2) With .Range(.Cells(2, 1), .Cells(.Cells(Rows.Count, 1).End(xlUp).Row, 1)) For Each cell In .SpecialCells(xlCellTypeConstants) Worksheets(1).Cells(20, 2).Value = cell.Offset(, 2).Value Worksheets(1).Cells(23, 3).Value = cell.Offset(, 4).Value Worksheets(1).Cells(26, 3).Value = cell.Offset(, 5).Value Worksheets(1).PrintOut From:=1, to:=1, Copies:=1, Collate:=True, IgnorePrintAreas:=False Next cell End With End With
End Sub
[/vba]
Странно... Немного переделал без нумерации, прогнал — печатает только Иванова и Сидорова, как и нужно. [vba]
Код
Sub AutoPrint()
Dim cell As Range
With Worksheets(2) With .Range(.Cells(2, 1), .Cells(.Cells(Rows.Count, 1).End(xlUp).Row, 1)) For Each cell In .SpecialCells(xlCellTypeConstants) Worksheets(1).Cells(20, 2).Value = cell.Offset(, 2).Value Worksheets(1).Cells(23, 3).Value = cell.Offset(, 4).Value Worksheets(1).Cells(26, 3).Value = cell.Offset(, 5).Value Worksheets(1).PrintOut From:=1, to:=1, Copies:=1, Collate:=True, IgnorePrintAreas:=False Next cell End With End With
юзеры все "умные" стали - типа Вам тут работы на 18 мин..
[offtop]А сильно умный юзер, способный точно оценить, сколько времени мне (!) нужно на работу, пусть сам её делает, раз знает как. Знаете анекдот про отвёртку? У мужика заглохла машина, он её дотолкал до СТО.. Вышел механик, открыл капот, ткнул отвёрткой, машина завелась. — Ой, класс, спасибо! Сколько с меня? — Тысяча. — Почему так дорого! Вы же только отвёрткой ткнули! Механик молча уходит и возвращается со счётом: 1. Ткнул отвёрткой 10 руб. 2. Знал, куда 990 руб.
юзеры все "умные" стали - типа Вам тут работы на 18 мин..
[offtop]А сильно умный юзер, способный точно оценить, сколько времени мне (!) нужно на работу, пусть сам её делает, раз знает как. Знаете анекдот про отвёртку? У мужика заглохла машина, он её дотолкал до СТО.. Вышел механик, открыл капот, ткнул отвёрткой, машина завелась. — Ой, класс, спасибо! Сколько с меня? — Тысяча. — Почему так дорого! Вы же только отвёрткой ткнули! Механик молча уходит и возвращается со счётом: 1. Ткнул отвёрткой 10 руб. 2. Знал, куда 990 руб.StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Теперь вроде работает. Проблема в том, что при добавлении новых строк (данных) на лист "список" необходимо будет дописывать макрос, это не совсем удобно объем данных большой, будет затрачиваться много времени.
Теперь вроде работает. Проблема в том, что при добавлении новых строк (данных) на лист "список" необходимо будет дописывать макрос, это не совсем удобно объем данных большой, будет затрачиваться много времени.Allexsin