Если вы хотите использовать список, я бы порекомендовал настроить форму пользователя со списком и кнопкой. В этом списке необходимо включить множественный выбор, что можно сделать из кода.
Опять же, это распечатает не только выбранные рабочие листы, но и выборку из каждого рабочего листа. Вы должны убедиться, что в каждом листе выделены правильные ячейки, прежде чем запускать код для вашего списка.
Было бы необязательно включать номера страниц в ваш код, потому что, как только это настроено (см. Ответ выше), оно останется таким до тех пор, пока не будет изменено снова. Если вы хотите, чтобы так было всегда, сохраните книгу после настройки пользовательского нижнего колонтитула.
Вот пример кода, чтобы вы начали. Предполагается, что пользовательская форма называется UserForm, список - ListBox1, а командная кнопка - cmd_print. Любые строки, начинающиеся с ', являются комментариями к коду после него.
Private Sub UserForm_Initialize()
'make sure listbox1 allows multiple selections
ListBox1.MultiSelect = fmMultiSelectExtended
'display all worksheets in listbox1
Dim sheet_choose As Long
For sheet_choose = 1 To Worksheets.Count
ListBox1.AddItem (Worksheets.Item(sheet_choose).Name)
Next
End Sub
Private Sub cmd_print_Click()
'use no_selected_worksheets to tell
'if anything has been selected in
'listbox1. default = true b/c assumes
'nothing has been selected until
'finding out otherwise.
Dim no_selected_worksheets As Boolean
no_selected_worksheets = True
'go through listbox, check what has been
'selected.
Dim list_choose As Long
For list_choose = 0 To ListBox1.ListCount - 1
'if worksheet has been selected in
'listbox, make worksheet selected
'in workbook.
If ListBox1.Selected(list_choose) Then
If no_selected_worksheets Then
'if this is the first worksheet
'to be selected, make sure no
'other worksheets are also
'selected.
Worksheets(list_choose + 1).Select
'change to false to indicate a
'worksheet has been selected.
no_selected_worksheets = False
Else
'if this is *not* the first worksheet
'to be selected in the listbox, then
'make sure this worksheet is selected
'in addition to the other worksheets.
Worksheets(list_choose + 1).Select (False)
End If
End If
Next
'if selection(s) made, printout. this will print only
'the selections.
If Not no_selected_worksheets Then
'as alternative to ActiveWorkbook.PrintOut, use
'ActiveWorkbook.PrintPreview
ActiveWorkbook.PrintOut
Else
'display a message if nothing was selected
MsgBox "No sheets were selected for printing as .pdf", vbInformation, "PDF printer"
End If
End Sub
Дополнительная справка по любой из этих функций доступна через справку VBA.