'ワークシートを選択し、印刷プレビューするマクロ 'MakeDialogSheetマクロを実行してダイアログシートを作成した後、 'SelectAndPreviewマクロを実行してください。 Option Explicit 'ダイアログシート名を適当に設定してください。 Const DialogSheetName = "Dialog10" 'ワークシートを選択し、印刷プレビューするマクロ Sub SelectAndPreview() Dim dlg As DialogSheet, obj As Object Dim i As Integer Dim flag As Boolean Set dlg = ThisWorkbook.DialogSheets(DialogSheetName) 'リストボックスの初期化 With dlg.ListBoxes(1) .RemoveAllItems For Each obj In ActiveWorkbook.Worksheets .AddItem obj.Name Next End With 'ダイアログボックスを表示 If Not dlg.Show Then Exit Sub flag = False With dlg.ListBoxes(1) For i = 1 To .ListCount 'シートを選択する。 If .Selected(i) Then If flag Then ActiveWorkbook.Worksheets(i).Select False Else ActiveWorkbook.Worksheets(i).Select flag = True End If End If Next End With '選択シートを印刷プレビューする。 If flag Then ActiveWindow.SelectedSheets.PrintPreview End Sub 'ダイアログシートを作成するマクロ Sub MakeDialogSheet() Dim dlg As DialogSheet Dim gw As Double For Each dlg In ThisWorkbook.DialogSheets If dlg.Name = DialogSheetName Then MsgBox (DialogSheetName & " はすでに存在します。") Exit Sub End If Next Set dlg = DialogSheets.Add With dlg gw = .Buttons(1).Height / 3 .Name = DialogSheetName .DialogFrame.Caption = "ワークシートの選択" End With With dlg.ListBoxes.Add(Left:=gw * 14, Top:=gw * 11, _ Width:=gw * 37, Height:=gw * 19) .MultiSelect = xlSimple .SendToBack End With With dlg.Labels.Add(Left:=gw * 14, Top:=gw * 8, _ Width:=gw * 37, Height:=gw * 3) .Caption = "処理を行うシートを選択してください。" .SendToBack End With End Sub