如何在页脚区域打印具有不同页码的多张纸

时间:2019-01-18 12:39:45

标签: excel vba

尝试编写VBA代码Microsoft Excel以从页脚区域的一个Excel工作表中打印具有不同页码和字词的多张纸。

我创建了一个按钮并添加了一些代码,但出现错误。

此代码有效。

Sub PrintBOL()
    Dim x%
    x% = 1
    For x% = 1 To 3
        With ActiveSheet.PageSetup
            .CenterFooter = x% & " of 3"
        End With
        ActiveSheet.PrintOut
    Next x%
End Sub

在向页码添加文字时,这是出错的地方:

Sub PrintBOL()
    Dim x%
    x% = 1
    For x% = 1 To 3
        With ActiveSheet.PageSetup
            If x% = 1 Then
                result = .CenterFooter = x% & " of 3" & "   Company Copy" & ActiveSheet.PrintOut
            Else
                If x% = 2 Then
                    result = .CenterFooter = x% & " of 3" & "   Customer Copy" & ActiveSheet.PrintOut
                Else
                    If x% = 3 Then
                        result = .CenterFooter = x% & " of 3" & "   Carrier Copy" & ActiveSheet.PrintOut
        End With
    Next x%
End Sub

预计要打印3页,

1 of 3 Company Copy
1 of 3 Customer Copy
1 of 3 Carrier Copy

2 个答案:

答案 0 :(得分:0)

This should do the trick:

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

答案 1 :(得分:0)

您实际上不需要在那里有x%= 1行。当您输入For x%= 1到3时,计算机会将其初始化为1。 在我看来,您根本不需要“ If ... else”语句。在For循环中,x%已经从1递增到3。如果您试图将数字1放在表1上,则问题是:

With Activesheet.PageSetup

应该是

With Activeworkbook.Sheets(x%).PageSetup

那样,您将始终专注于工作表1至3,因为它位于For循环内。最后,这条线对您不利:

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

这可能是返回错误的部分。像这样写的时候,就是将页面参数(+号的右侧)存储到一个未变暗的变量中。即使将结果作为对象设为昏暗,您也不会告诉计算机以后再对结果做任何事情,因此不会使页面底部的内容。 with已经告诉计算机使用您在该词之后放置的任何对象。

要切换语言,您可以在包含适当术语的数组中循环计数器。

根据您在最初的问题和后续评论中告诉我们的内容,我认为您的最终代码应如下所示:

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使所有内容保持对齐。