Excel 如何打印一系列纸张?
我有一个VBA代码,它在表行项目汇总表7和比较工作表17之间添加了新的工作表,标记为成本核算表2、成本核算表3等。我不知道会添加多少张,这由用户决定 如何打印中间添加的图纸?基本上,我希望行项目总结加上任何成本计算表被打印,而不是比较工作只表到这一点 **编辑:下面的代码用于添加新图纸Excel 如何打印一系列纸张?,excel,vba,Excel,Vba,我有一个VBA代码,它在表行项目汇总表7和比较工作表17之间添加了新的工作表,标记为成本核算表2、成本核算表3等。我不知道会添加多少张,这由用户决定 如何打印中间添加的图纸?基本上,我希望行项目总结加上任何成本计算表被打印,而不是比较工作只表到这一点 **编辑:下面的代码用于添加新图纸 Sub NewSheet() Worksheets("Costing Sheet").Copy After:=Worksheets("Line Item Summary") Worksheets(Workshe
Sub NewSheet()
Worksheets("Costing Sheet").Copy After:=Worksheets("Line Item Summary")
Worksheets(Worksheets("Costing Sheet").Index + 1).Activate
'Active Tab
ActiveSheet.Tab.ColorIndex = xlColorIndexNone
End Sub
按名称循环所有工作表,如果不是以您的2张工作表名称开头,则进行循环
Sub WorksheetLoop()
Dim WS_Count As Integer
Dim I As Integer
' Set WS_Count equal to the number of worksheets in the active
' workbook.
WS_Count = ActiveWorkbook.Worksheets.Count
' Begin the loop.
For I = 1 To WS_Count
If ActiveWorkbook.Worksheets(I).Name = "Line Item Summary" Or ActiveWorkbook.Worksheets(I).Name = "Comparaison Job" then
'Don't print
Else
ActiveWorkbook.Worksheets(I).PrintOut
Next I
End If
End Sub
按名称循环所有工作表,如果不是以您的2张工作表名称开头,则进行循环
Sub WorksheetLoop()
Dim WS_Count As Integer
Dim I As Integer
' Set WS_Count equal to the number of worksheets in the active
' workbook.
WS_Count = ActiveWorkbook.Worksheets.Count
' Begin the loop.
For I = 1 To WS_Count
If ActiveWorkbook.Worksheets(I).Name = "Line Item Summary" Or ActiveWorkbook.Worksheets(I).Name = "Comparaison Job" then
'Don't print
Else
ActiveWorkbook.Worksheets(I).PrintOut
Next I
End If
End Sub
下面是另一个使用LIKE和通配符*的版本。这将仅检查需要打印的纸张
Sub Sample()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name = "Line Item Summary" Or ws.Name Like "Costing Sheet*" Then
ws.PrintOut
End If
Next ws
End Sub
我会记住的!是否可以按照前面代码的建议,将此代码更改为执行相反的操作?用户可能会更改这些成本计算表的名称*,但仍处于行项目汇总和比较作业之间–iCalder 31分钟前 这就是你想要的吗?我处理了几张支票。您可能需要对其进行编辑以使其更加健壮
Option Explicit
Option Explicit
Sub Sample()
Dim ws As Worksheet
Dim wsStartIndex As Long, wsEndIndex As Long
Dim i As Long
Dim wsName As String
'~~> Loop through the sheet and get the positions of the sheets
For i = 1 To ThisWorkbook.Worksheets.Count
wsName = ThisWorkbook.Sheets(i).Name
If wsName = "Line Item Summary" Then wsStartIndex = ThisWorkbook.Sheets(i).Index
If wsName = "Comparison Job" Then wsEndIndex = ThisWorkbook.Sheets(i).Index
If wsStartIndex <> 0 And wsEndIndex <> 0 Then Exit For
Next i
'~~> Do necessary checks
If wsStartIndex = 0 Then
MsgBox "Line Item Summary Sheet not found"
ElseIf wsEndIndex = 0 Then
MsgBox "Comparison Job Sheet not found"
ElseIf wsEndIndex < wsStartIndex Then
MsgBox "Comparison Job is before Line Item Summary. Sheets cannot be printed"
'~~> If everything is ok then print
ElseIf wsStartIndex <> 0 And wsEndIndex <> 0 Then
For i = wsStartIndex To (wsEndIndex - 1)
If ThisWorkbook.Sheets(i).Name <> "Costing Sheet" Then
ThisWorkbook.Sheets(i).pritnout
End If
Next i
End If
End Sub
下面是另一个使用LIKE和通配符*的版本。这将仅检查需要打印的纸张
Sub Sample()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name = "Line Item Summary" Or ws.Name Like "Costing Sheet*" Then
ws.PrintOut
End If
Next ws
End Sub
我会记住的!是否可以按照前面代码的建议,将此代码更改为执行相反的操作?用户可能会更改这些成本计算表的名称*,但仍处于行项目汇总和比较作业之间–iCalder 31分钟前 这就是你想要的吗?我处理了几张支票。您可能需要对其进行编辑以使其更加健壮
Option Explicit
Option Explicit
Sub Sample()
Dim ws As Worksheet
Dim wsStartIndex As Long, wsEndIndex As Long
Dim i As Long
Dim wsName As String
'~~> Loop through the sheet and get the positions of the sheets
For i = 1 To ThisWorkbook.Worksheets.Count
wsName = ThisWorkbook.Sheets(i).Name
If wsName = "Line Item Summary" Then wsStartIndex = ThisWorkbook.Sheets(i).Index
If wsName = "Comparison Job" Then wsEndIndex = ThisWorkbook.Sheets(i).Index
If wsStartIndex <> 0 And wsEndIndex <> 0 Then Exit For
Next i
'~~> Do necessary checks
If wsStartIndex = 0 Then
MsgBox "Line Item Summary Sheet not found"
ElseIf wsEndIndex = 0 Then
MsgBox "Comparison Job Sheet not found"
ElseIf wsEndIndex < wsStartIndex Then
MsgBox "Comparison Job is before Line Item Summary. Sheets cannot be printed"
'~~> If everything is ok then print
ElseIf wsStartIndex <> 0 And wsEndIndex <> 0 Then
For i = wsStartIndex To (wsEndIndex - 1)
If ThisWorkbook.Sheets(i).Name <> "Costing Sheet" Then
ThisWorkbook.Sheets(i).pritnout
End If
Next i
End If
End Sub
我没有任何代码在此时打印工作表问题已编辑为包含代码只需按索引循环工作表即可。我没有任何代码在此时打印工作表问题已编辑为包含代码只需按索引循环工作表即可。当我尝试此代码时,会出现下一个无For错误。缺少结束If.行项目还需要打印摘要:我添加了End If,但仍然会出现相同的错误在下一个I之前添加End If,不是在它之后。当我尝试此代码时会出现下一个无For错误。它缺少结束If。行项目摘要也需要打印:我添加了结束If,但仍然会出现相同的错误在下一个I之前添加结束If,而不是在它之后。这很好!只是想知道是否有一种方法可以排除名为Costing sheet的原始表,而不改变名称。我正在吃晚饭。。。你也可以使用成本表*对不起,我正在吃晚餐。。。您也可以使用成本计算表*将记住这一点!是否可以按照前面代码的建议,将此代码更改为执行相反的操作?用户可能会更改这些成本计算表的名称*,但仍处于行项目摘要和比较作业之间。因此,如果表行项目摘要的位置为5,而比较作业的位置为8,则您希望打印表5、6和7?这很好!只是想知道是否有一种方法可以排除名为Costing sheet的原始表,而不改变名称。我正在吃晚饭。。。你也可以使用成本表*对不起,我正在吃晚餐。。。您也可以使用成本计算表*将记住这一点!是否可以按照前面代码的建议,将此代码更改为执行相反的操作?用户可能会更改这些成本计算表*的名称,但仍将处于行项目摘要和比较作业之间。因此,如果表行项目摘要的位置为5,而比较作业的位置为8,那么是否要打印表5、6和7?