Как напечатать несколько листов с разными номерами страниц в области нижнего колонтитула

Чтобы получить правильные результаты, принимая во внимание такие вещи, как возможность границы, горизонтальную полосу прокрутки и / или число плавающих пикселей, вы должны использовать ...

el.scrollHeight - el.scrollTop - el.clientHeight < 1

ПРИМЕЧАНИЕ. : Вы должны использовать clientHeight вместо offsetHeight, если хотите получить правильные результаты. offsetHeight даст вам правильные результаты только тогда, когда el не имеет границы или горизонтальной полосы прокрутки

0
задан Ansgar Wiechers 18 January 2019 в 18:59
поделиться

2 ответа

Вам не нужно, чтобы там была строка x% = 1. Когда вы пишете для x% = 1 до 3, компьютер инициализирует его как 1. Мне также кажется, что вам вообще не нужны операторы «If ... else». x% уже увеличивается с 1 до 3 в цикле For. Если вы пытаетесь заставить его поставить число 1 на листе 1, ваша проблема:

With Activesheet.PageSetup

Это должно быть

With Activeworkbook.Sheets(x%).PageSetup

Таким образом, вы всегда будете фокусироваться на листах с 1 по 3, потому что это внутри вашего цикла For. Наконец, эта строка работает против вас:

result = .CenterFooter = x% & " of 3" & "   Company Copy" & ActiveSheet.PrintOut

Это, вероятно, та часть, которая возвращает ошибку. Когда вы пишете это так, вы сохраняете параметры страницы (справа от знака +) в неокрашенную переменную. Даже если вы хотите Dim result как объект, вы не скажете компьютеру сделать что-нибудь с результатом позже, так что это не даст вам страницы внизу. С уже говорит компьютеру использовать любой объект, который вы поставили после этого слова.

Чтобы переключать словоблудие, вы можете циклически перемещать счетчик по массиву с соответствующими терминами.

Из того, что вы сказали нам в своем первоначальном вопросе и в последующем комментарии, я думаю, что ваш окончательный код должен выглядеть следующим образом:

Dim x%
Dim ppl as string
ppl = Array("Company", "Customer", "Carrier")
For x% = 1 To 3
    With ActiveSheet.PageSetup
        .CenterFooter = x% & " of " & ActiveWorkbook.Sheets.Count & "   " & ppl(x%-1) & " Copy"
    End With
    ActiveSheet.PrintOut
Next x%

Имейте в виду, что массивы начинаются с 0, поэтому x% -1 на вашем счетчике держит все в порядке.

0
ответ дан Jake 18 January 2019 в 18:59
поделиться

Это должно сработать:

Sub PrintBOL()
    Dim x%
    x% = 1
    For x% = 1 To 3
        If x% = 1 Then
            ActiveSheet.PageSetup.CenterFooter = x% & " of 3" & "   Company Copy"
        ElseIf x% = 2 Then
            ActiveSheet.PageSetup.CenterFooter = x% & " of 3" & "   Customer Copy"
        ElseIf x% = 3 Then
            ActiveSheet.PageSetup.CenterFooter = x% & " of 3" & "   Carrier Copy"
        End If
        ActiveSheet.PrintOut
    Next x%
End Sub
0
ответ дан Ansgar Wiechers 18 January 2019 в 18:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: