複数のワークシートを1つのジョブとして印刷するには、ユーザーが印刷したいワークシートを基にして印刷する必要があります。ユーザーの選択に基づいて複数のワークシートを一度に印刷
私はワークシートを持っています。ここでは、列Aにブック内のすべてのワークシートのリストがあります。列Bにはdropdown
のリストがあり、ユーザはそのシートを印刷するかどうかを示すためにYまたはNを選択します。
私のコードは、1つのジョブとして列BのYを持つすべてのワークシートを印刷することを想定しています。私はFirstSheetPrint
と呼ばれるセル参照を持っています。これは、B列にYがあるワークシートのリストにある最初のワークシートの名前をコピーします。次に、その名前を取り、その周りにワークシート名として使用できるように追加しますその後、私はYを持つすべての行をループし、 ""とワークシート名を1つの文字列に追加します(ループが続行すると文字列は増加し続けます)。
私の問題は、最終的に配列にこのシート名の文字列を割り当てようとするとエラーが発生するということです。最後の文字列がどのように見えるかを示すメッセージボックスのスクリーンショットと、エラーのスクリーンショットを追加しました。
任意の助けいただければ幸いです!
Sub PrintAllSheets()
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim DoesPrint As Boolean
Dim SheetsToPrint As String
Dim SheetCount As Integer
Dim StartCount As Integer
Dim StartRange As String
Dim totalString As String
DoesPrint = Application.Dialogs(xlDialogPrinterSetup).Show
If DoesPrint = False Then
Application.ScreenUpdating = True
Application.EnableEvents = True
Exit Sub
Else
End If
SheetsToPrint = Sheets("Printing").Range("FirstSheetPrint").Value
SheetCount = Sheets("Printing").Range("SheetsToPrintCount").Value
StartCount = 4
If SheetsToPrint = "N" Then
MsgBox "Please select which sheets you would like to print"
Application.ScreenUpdating = True
Application.EnableEvents = True
Exit Sub
Else
SheetsToPrint = ("""" & SheetsToPrint & """")
For i = 1 To SheetCount
If Sheets("Printing").Range("N" & StartCount).Value > 0 Then
SheetsToPrint = (SheetsToPrint & ", " & """" & Sheets("Printing").Range("L" & StartCount).Value & """")
StartCount = StartCount + 1
Else
StartCount = StartCount + 1
End If
Next i
MsgBox ("We will print: " & SheetsToPrint)
End If
Sheets(Array(SheetsToPrint)).PrintOut
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
シート名または範囲名が正しいかどうかを確認してください – 0m3r
シート名が正しいかどうかです。コピー/ペーストを使用して、すべてが100%正確であることを確認しました。私は問題が 'Sheets(Array(SheetsToPrint))の実際の構文であると仮定しています。Printout'コード –