【发布时间】:2019-06-14 19:14:57
【问题描述】:
我有一个通过单击按钮启动的 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”表也被打印出来,它是打印的第一页。
问题出在哪里?
【问题讨论】:
-
据我所知,
PrintOut有一些可选参数,您可以在其中指定要打印的页面。检查docs.microsoft.com/en-us/office/vba/api/excel.sheets.printout -
是的,我可以在工作表中选择页面,但这不是我想要的。我想选择打印页而不是页面
-
工作表中的页面是什么意思?工作簿由一张或多张工作表组成。工作表与工作表相同。它们有点像文档的页面。打印的每张纸至少需要 1 页才能打印出来(可能需要更多)。你说你只想打印工作表
Lappu,所以使用Printout你应该只能打印那个。 -
是的,我的意思是我理解像一张 A4 或其他尺寸的“页面”取决于打印设置,而“工作表”是 excel 文件中的一张工作表。我知道打印输出应该只打印一张被选中的工作表,但由于某种原因,我的代码也打印了“Tulosta”工作表。我无法弄清楚为什么代码会这样做,但是我能够通过以下方式解决问题选择“Lappu”工作表和打印输出活动表