我有一个通过单击按钮启动的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”表,这是第一页。
问题出在哪里?
答案 0 :(得分:0)
这是解决我的问题的一种解决方法:
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打印出活动表