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, я думаю, что это незначительно. Однако было бы лучше использовать Collection
для хранения желаемых имен листов вместо Array
.