Макрос Excel печатает все листы, а не только выбранный - PullRequest
0 голосов
/ 13 июня 2019

У меня есть макрос Excel, который запускается нажатием кнопки. Что нужно сделать макросу, это распечатать один лист Excel и увеличить значение в одной ячейке после каждой печати. Все работает отлично, кроме макроса ТАКЖЕ ПЕЧАТИТ лист, на котором запущен макрос (даже если этот лист не выбран в коде ..)

Вот мой код макроса:

Sub Painike_Napsauta()
Dim i As Long

If MsgBox("Tulosta?", vbYesNo + vbQuestion) = vbNo Then Exit Sub
Cancel = True
Application.EnableEvents = False
Application.Dialogs(xlDialogPrint).Show
Sheets("Lappu").Range("C1").Value = Sheets("Tulosta").Range("C2").Value
For i = Sheets("Tulosta").Range("C3").Value To Sheets("Tulosta").Range("C4").Value
    Sheets("Lappu").Range("C2").Value = i
    Sheets("Lappu").PrintOut
Next i

Application.EnableEvents = True
End Sub

Итак, все, что я хочу напечатать, это лист "Lappu" на каждой итерации, но по какой-то причине печатается также лист "Tulosta", и это первая напечатанная страница.

Где проблема?

1 Ответ

0 голосов
/ 14 июня 2019

Вот способ решения моей проблемы:

Sub Painike_Napsauta()
Dim i As Long

If MsgBox("Tulosta?", vbYesNo + vbQuestion) = vbNo Then Exit Sub
Cancel = True
Application.EnableEvents = False
Sheets("Lappu").Range("C1").Value = Sheets("Tulosta").Range("C2").Value
Sheets("Lappu").Range("C2").Value = Sheets("Tulosta").Range("C3").Value
Sheets("Lappu").Activate
Application.Dialogs(xlDialogPrint).Show
For i = Sheets("Lappu").Range("C2").Value To Sheets("Tulosta").Range("C4").Value - 1
    Sheets("Lappu").Range("C2").Value = i + 1
    ActiveSheet.PrintOut
Next i

Application.EnableEvents = True
End Sub

Поэтому я сначала выбираю активный лист "Lappu" с помощью .Activate, а затем распечатываю активный лист с помощью ActiveSheet.PrintOut

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...