尝试编写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
答案 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使所有内容保持对齐。