День добрый. Подскажите пожалуйста, существует ли макрос или функция, с помощью которых возможно автоматическое изменение значения ячейки при печати документа? Более подробно. Прикрепленный бланк будет заполняться вручную. Необходимо, чтобы ячейки С2 и С11 автоматически последовательно менялись при печати. т.е. при первой печати страницы значения ячеек: С2 - 1, С11 - 2 при второй печати С2 - 3, С11 - 4 и т.д. Просматривал форум, подходящих тем не нашел. Возможно некорректно задавал поиск. Заранее спасибо за помощь!
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name <> "Лист1" Then Exit Sub
With Worksheets("Лист1")
If .[C2].Value < 1 Then
.[C2].Value = 1
Else
.[C2].Value = .[C2].Value + 2
End If
.[C11].Value = .[C2].Value + 1
End With
End Sub
Для эксперимента поставьте виртуальный пдф-принтер.
JayBhagavan, проверил Ваш код. Работает. Спасибо! Но почему то номер задает не совсем корректно. Первый лист печатает С2 -1, С11 - 2 Второй С2 - 2, С11 - 3 Третий С2 - 3, С11 - 4 и т.д.
как я понимаю, строку .[C11].Value = .[C11].Value + 1 надо откорректировать .[C11].Value = .[C2].Value + 2 ?
dimka-dn написал: при первой печати страницы значения ячеек: С2 - 1, С12 - 2 при второй печати С2 - 3, С12 - 4 и т.д.
А и т.д. - это как? Для С2: 1 3 5 7 и т.д.? Или 1 3 9 27 и т.д.? Для С12: 2 4 6 8 и т.д. или 2 4 8 16 и т.д.? или С12 = С2+1, тогда С12 м.б. = 2 4 10 28 и т.д.?
Или у Вас опечатка, и JayBhagavan понял Вас правильно?
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
Добрый день. Подскажите пожалуйста, возможно ли откорректировать нижеприведенный код так, чтобы порядковый номер в ячейках С2 и С11 автоматически менялся при задаче сразу нескольких страниц на печать?
Код
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name <> "Лист1" Then Exit Sub
With Worksheets("Лист1")
.[C2].Value = .[C2].Value + 2
.[C11].Value = .[C2].Value + 1
End With
End Sub
Private Sub Workbook_BeforePrint(Cancel As Boolean)
For Each sh In ActiveWorkbook.Windows(ActiveWindow.Index).SelectedSheets
If sh.Name Like "Лист1" Then
With Worksheets("Лист1")
If .[C2].Value < 1 Then
.[C2].Value = 1
Else
.[C2].Value = .[C2].Value + 2
End If
.[C11].Value = .[C2].Value + 1
End With
Exit For
End If
Next sh
End Sub
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
dimka-dn написал: при задаче сразу нескольких страниц на печать?
Я не так Вас понял. Подумал, что Вы хотите печатать несколько выделенных листов. Тогда не подходит. --- ПС Надо писать "несколько копий листа", а не "нескольких страниц".
dimka-dn, как-то так. (кривовато) Только кол-во копий задаёте в окне макроса:
Код
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name <> "Лист1" Then Exit Sub
Application.EnableEvents = False
With Worksheets("Лист1")
i_copies = Application.InputBox("How mutch copies:", "", 1, , , , , 1)
If i_copies >= 1 Then
For i = 1 To i_copies
If .[C2].Value < 1 Then
.[C2].Value = 1
Else
.[C2].Value = .[C2].Value + 2
End If
.[C11].Value = .[C2].Value + 1
.PrintOut
Next i
End If
End With
Application.EnableEvents = True
Cancel = True
End Sub
Лучше сделать отдельную кнопку для печати на самом листе, но это уже сами.
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori