Печать выбранных страниц в листе Excel с помощью макроса VBA

У меня есть рабочий лист в Excel с несколькими страницами. Я хочу напечатать выбранные страницы, eG Страница 1, Страница 3, Страница 4 и Страница 6. Могу ли я сделать это в одиночном задании на печать?

Я знаю, что могу печатать страницы с помощью команд: ActiveSheet.PrintOut From:=1, To:=1, Copies:=1, Collate:=True ActiveSheet.PrintOut From:=1, To:=3, Copies:=3, Collate:=True ActiveSheet.PrintOut From:=1, To:=4, Copies:=4, Collate:=True ActiveSheet.PrintOut From:=1, To:=6, Copies:=6, Collate:=True

Но таким образом я создаю много заданий на печать. Поэтому я выгляжу как нечто вроде PrintOut (Page1, стр. 3, стр. 4, …)


Дополнительная информация о моей проблеме. В моих рабочих листах есть заметки о доставке: заметки о доставке Excel. Некоторые из них не имеют записей в столбце C. (например, стр. 2). Я написал Makro, который выполняет итерации над страницами и проверяет C-столбцы на каждой странице:

 Option Explicit Sub LieferscheineDrucken() Dim HPB As HPageBreak Dim breakAdress As Integer Dim pageNumber As Integer Dim productNumber As Integer Dim printCondition As Boolean pageNumber = 1 printCondition = False 'Drucke Seite 1 For productNumber = 10 To 61 ActiveSheet.Cells(productNumber, "C").Select If ActiveSheet.Cells(productNumber, "C").Value <> "" Then printCondition = True End If Next If printCondition = True Then ActiveSheet.PrintOut From:=1, To:=1, Copies:=1, Collate:=True End If printCondition = False pageNumber = pageNumber + 1 'Drucken der restlichen Seiten For Each HPB In ActiveSheet.HPageBreaks breakAdress = CInt(Mid(HPB.Location.Address, 4, 5)) 'Teste, ob Lieferschein Einträge enthält For productNumber = (breakAdress + 9) To (breakAdress + 60) If ActiveSheet.Cells(productNumber, "C").Value <> "" Then printCondition = True End If Next If printCondition = True Then ActiveSheet.PrintOut From:=pageNumber, To:=pageNumber, Copies:=1, Collate:=True End If pageNumber = pageNumber + 1 printCondition = False Next End Sub 

Но этот макрос отправил распечатку для каждой страницы. Как я могу напечатать соответствующие страницы, отправив только один печатный напиток?

Спасибо за вашу помощь!

Код будет таким.

 Sub test() Dim Ws As Worksheet Dim hp As HPageBreak Dim vAddress() Dim i As Long Set Ws = ActiveSheet n = Ws.HPageBreaks.Count For i = 0 To n ReDim Preserve vAddress(i) If i = 0 Then vAddress(i) = Ws.Range("a1").Address Else vAddress(i) = Ws.HPageBreaks(i).Location.Address End If Set rngDB = Ws.Range(vAddress(i)).Range("c5").Resize(21) 'Range("c5").Resize (21) is coumn C date range If WorksheetFunction.CountA(rngDB) Then Ws.PrintOut from:=i + 1, To:=i + 1, preview:=True End If Next i End Sub 
  • IF Function, Excel. Как установить значение True, если столбец A1: A10 установлен на «Pass»?
  • У меня есть набор дат в 6 столбцах на листе excel. Как найти общие даты во всех этих шести столбцах?
  • Доступ к тексту в текстовый файл (форматированные файлы), затем импорт
  • Как назначить значение по умолчанию для всех ячеек под определенным столбцом?
  • Проверьте установленную версию Excel и запустите ее
  • Ссылка на различный размер таблицы excel для слова
  • Формула для проверки несмежных пробелов / незабитых строк по строке
  • Поиск того, какой из четырех ящиков лучше всего удерживает размеры элемента X
  • Как читать документы Word, Excell и PDF в PHP?
  • Копировать формат из одного диапазона столбцов в другой диапазон столбцов в Excel
  • MS Excel Structured Refrence
  • Давайте будем гением компьютера.