我有一个 Excel 2007 电子表格,我想编写一个 VBA 程序来按名称打印特定的工作表。我该怎么做呢?
"FirstSheet","ThirdSheet",
例如,我想打印"FourthSheet"
但不"SecondSheet".
如果您知道工作表名称,只需PrintOut
像这样调用函数:
Sheets("Name").PrintOut
对于少量的纸张,通过这种方式更容易!
Public Sub PrintByName(Names As Variant)
Dim s As Worksheet
Dim i As Integer
If IsArray(Names) Then
For Each s In ActiveWorkbook.Worksheets
For i = 0 To UBound(Names)
If StrComp(s.Name, Names(i), vbTextCompare) = 0 Then
s.PrintOut
End If
Next i
Next s
End If
End Sub
像这样调用:
PrintByName Array("FirstSheet", "ThirdSheet", "FourthSheet")
就运行时性能而言,嵌套循环并不是最佳的。由于 Excel 工作簿可以包含的工作表数量有限,我认为这可以忽略不计。但是,使用 aCollection
来包含所需的工作表名称而不是 anArray
会更好。
不需要循环执行此操作,一行代码就足够了:
Sheets(Array("FirstSheet", "ThirdSheet", "FourthSheet")).PrintOut Copies:=1
类似于以下内容的东西应该可以工作:
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
If (sh.Name = "Sheet1") Then
sh.PrintOut
End If
Next sh