bje*_*ang 8 excel vba excel-vba excel-2010
免责声明:自从我(很多)使用VBA工作已经有几年了,所以这可能是一个问题,因为我将自己与我通常处理的语言完全不同.
所以; 我有一张多张(20+)的工作簿(Excel 2010),其中大多数是多页的.为了在打印所有内容时更容易,我想添加一些特定于工作表的标题,其中包括工作表的名称,页数等.
我写了一个小函数,理论上应该通过遍历所有设置标题的工作表来为我做这个.但是,出于某种原因,它仅在标头为空时才有效; 如果它已经有一个值,它会因某些未知原因而拒绝覆盖.
Dim sheetIndex, numsheets As Integer
sheetIndex = 1
numsheets = Sheets.Count
' Loop through each sheet, but don't set any of them to active
While sheetIndex <= numsheets
Dim sheetname, role, labeltext As String
sheetname = Sheets(sheetIndex).name
role = GetRole(mode)
labeltext = "Some text - " & sheetname & " - " & role
With Sheets(sheetIndex).PageSetup
.LeftHeader = labeltext
.CenterHeader = ""
.RightHeader = "Page &[Page] / &[Pages]"
.LeftFooter = "&[Date] - &[Time]"
.CenterFooter = ""
.RightFooter = "Page &P / &N"
End With
sheetIndex = sheetIndex + 1
Wend
Run Code Online (Sandbox Code Playgroud)
我找到了一个似乎可以替换文本的解决方案.无论出于何种原因,在宏中,您需要包含页眉/页脚格式字符代码才能使其正常工作.
此代码用于使用新信息替换现有标题文本:
Sub test()
Dim sht As Worksheet
Set sht = Worksheets(1)
sht.PageSetup.LeftHeader = "&L left text"
sht.PageSetup.CenterHeader = "&C center Text"
sht.PageSetup.RightHeader = "&R right text"
End Sub
Run Code Online (Sandbox Code Playgroud)
如果没有&L,&C和&R文本之前的代码,我无法得到它的工作.
我发现一些有趣的行为是,如果您使用以下代码:
.CenterHeader = "&L some text"
Run Code Online (Sandbox Code Playgroud)
它实际上把some text的LeftHeader位置.这让我相信格式化代码非常重要.
Application.PrintCommunication = False在执行PageSetup之前,该行(由宏录制器添加)通过VBA拧紧格式化.
如果您的代码中包含此行,请尝试将其删除.这解决了我通过VBA设置页眉和页脚的问题.
| 归档时间: |
|
| 查看次数: |
18642 次 |
| 最近记录: |