Доброго времени суток, уважаемые форумчане. Подскажите, пожалуйста, ответ на небольшой вопрос. Итак, ситуация: необходимо в колонтитул листа вывести информацию (сумму по странице) . Для теста (код выведен на кнопку) я попытался сделать это так:
Может и не совсем оптимально придумал (критика и оптимизация кода приветствуются ), но код работает. НО когда я попытался перенести его в событие Workbook_BeforePrint(Cancel As Boolean), то ничего не вышло, точнее вышло да не так: печатаются все 19 из требуемых (в данном примере) 4 страниц и сумма в колонтитулах ставится одинаковая для всех страниц (по 4 странице). Почему так получается и что надо изменить в коде, чтобы исправить эту ошибку?
Заранее спасибо всем откликнувшимся
Код |
---|
Dim HPB As HPageBreak, rngHPB As Range, sum_page As Double, i As Long, j As Long If ActiveSheet.Name = "Остатки на складе" Then 'обязательно условие - указание имени листа, иначе VBA пытается выполнить код на др. листах With Sheets("Остатки на складе") ' If .HPageBreaks.Count > 0 Then Set rngHPB = .HPageBreaks(.HPageBreaks.Count).Location i = 8 For Each HPB In ActiveSheet.HPageBreaks j = j + 1 Set rngHPB = HPB.Location sum_page = Application.Sum(.Range(.Cells(i, 9), .Cells(HPB.Location.Row - 1, 9))) If sum_page > 0 Then i = HPB.Location.Row .PageSetup.RightFooter = Join(Array("Итого по стр. ", j, Space(1), Format(sum_page, "0.00"))) .PrintOut From:=j, To:=j, Copies:=1, Collate:=True Else: Exit Sub End If Next HPB ' End If End With End If |
Заранее спасибо всем откликнувшимся