首页 > 解决方案 > Excel 宏正在打印所有工作表,而不仅仅是选择一个

问题描述

我有一个通过单击按钮启动的 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”表也被打印,它是打印的第一页。

问题出在哪里?

标签: excelvba

解决方案


这是我的问题的解决方法:

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

因此,我首先使用 .Activate 选择“Lappu”表活动表,然后使用 ActiveSheet.PrintOut 打印活动表


推荐阅读