Страницы: 1
RSS
Макрос или функция для изменения значения ячейки при печати документа
 
День добрый.
Подскажите пожалуйста, существует ли макрос или функция, с помощью которых возможно автоматическое изменение значения ячейки при печати документа?
Более подробно.
Прикрепленный бланк будет заполняться вручную. Необходимо, чтобы ячейки С2 и С11 автоматически последовательно менялись при печати.
т.е.
при первой печати страницы значения ячеек:
С2 - 1, С11 - 2
при второй печати
С2 - 3, С11 - 4
и т.д.
Просматривал форум, подходящих тем не нашел. Возможно некорректно задавал поиск. Заранее спасибо за помощь!
Изменено: dimka-dn - 29.09.2015 09:51:05
 
Как понял. В модуль книги ЭтаКнига:
Код
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 - 29.09.2015 10:21:28

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
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 - 29.09.2015 09:41:45
 
dimka-dn, скорректировал код.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
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 понял Вас правильно?
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
JayBhagavan,
все равно печатает
С2:   1   2  3  4
С11:  2  3  4  5
 
Цитата
dimka-dn написал: все равно печатает
Поменяйте
Код
.[C2].Value = .[C2].Value + 1 
на
Код
.[C2].Value = .[C2].Value + 2
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Михаил Лебедев
спасибо. Все четко

ВСЕМ СПАСИБО ЗА ПОМОЩЬ!!
 
dimka-dn, код скорректировал. (добавил проверку для первой печати)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Добрый день.
Подскажите пожалуйста, возможно ли откорректировать нижеприведенный код так, чтобы порядковый номер в ячейках С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
Изменено: dimka-dn - 30.09.2015 11:21:34
 
Код
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
 
JayBhagavan,спасибо за отклик
заменил код. При нажатии на печать и вводе количества копий, выдает следующий порядковый номер на всех листах
Изменено: dimka-dn - 30.09.2015 11:35:40
 
Цитата
dimka-dn написал: при задаче сразу нескольких страниц на печать?
Я не так Вас понял. Подумал, что Вы хотите печатать несколько выделенных листов. Тогда не подходит.
---
ПС Надо писать "несколько копий листа", а не "нескольких страниц".
Изменено: JayBhagavan - 30.09.2015 11:47:32

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, пардон за некорректную формулировку.
 
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
 
Цитата
JayBhagavan написал:
Лучше сделать отдельную кнопку для печати на самом листе, но это уже сами.
поколдую на досуге :) спасибо за помощь все отлично работает :)
Страницы: 1
Читают тему
Наверх