在Excel VBA中,如何删除灰色分页符?

问题描述 投票:2回答:3

题:

如何使用VBA代码从Excel工作表中删除灰色虚线分页符(不是蓝色分页符)?

背景:

我们有一组通过VBA生成的ODBC电子表格。在我的本地方框上运行两个不同(虽然相似)的电子表格而不手动更改Excel中的任何选项时,一个在分页符上显示虚线灰色线(见下图),而另一个则没有。两者都足够大,可以延伸到一页。我无法找到给出理由的代码中的差异。

互联网上的大多数建议都指向通过GUI的Excel中的选项,这不是一个选项。我正在寻求VBA解决方案。

我尝试过的:

我尝试了DisplayPageBreaks = False的几种不同的变化和应用。要么我使用不正确,要么它不是正确的设置。我最合理地使用这个属性是:

ActiveWorkbook.Worksheets(str_Worksheet_Name).DisplayPageBreaks = False

请注意,变量str_Worksheet_Name在代码中的许多其他行中起作用,例如:ActiveWorkbook.Worksheets(str_Worksheet_Name).Cells(1, 1).Select在所需的工作表上正确选择单元格A1

参考图片:

这些是我想要删除的行:

enter image description here

提前致谢。


附加信息:

  • RE Mat的马克评论:

听起来这段代码中的内容阻止它们显示在此电子表格中。请注意,此代码段来自正确不显示分页符的工作表:

Public Function cmlapi_Set_To_Landscape()

On Error Resume Next
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
    .LeftHeader = ""
    .CenterHeader = ""
    .RightHeader = ""
    .LeftFooter = ""
    .CenterFooter = ""
    .RightFooter = ""
    .LeftMargin = Application.InchesToPoints(0.75)
    .RightMargin = Application.InchesToPoints(0.75)
    .TopMargin = Application.InchesToPoints(1)
    .BottomMargin = Application.InchesToPoints(1)
    .HeaderMargin = Application.InchesToPoints(0.5)
    .FooterMargin = Application.InchesToPoints(0.5)
    .PrintHeadings = False
    .PrintGridlines = False
    .PrintComments = xlPrintNoComments
    .CenterHorizontally = False
    .CenterVertically = False
    .Orientation = xlLandscape
    .Draft = False
    .PaperSize = xlPaperLetter
    .FirstPageNumber = xlAutomatic
    .Order = xlDownThenOver
    .BlackAndWhite = False
    .Zoom = 100
End With
If glob_Header_On_Every_Page = True Then
    With ActiveSheet.PageSetup
        .PrintTitleRows = "$1:$" & HEADER_OFFSET
    End With
End If
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1

End Function
  • 来自Mat's Mug的答案: With ActiveSheet.PageSetup .Orientation = xlLandscape .FitToPagesTall = 1 .FitToPagesWide = 1 End With

没有运气。线路仍在那里。请注意,.Orientation = xlLandscape确实有效,所以不应该担心代码中指定的位置。

  • 来自Vidyata的回答:

ActiveSheet.DisplayPageBreaks在电子表格运行后立即在窗口(Ctrl + G)中工作。重新运行再次将虚线放回原位。奇怪的是在代码中使用相同的属性似乎没有效果,但显然是正确的代码。也许它需要一个特定的地方?我会想,只要我选择正确的纸张时使用ActiveSheet或指定我的纸张名称就不应该这么重要。

进一步建议我在最后一行尝试。好主意,但也没有成功。在两个单独的试验的最后一行尝试了这两个:

ActiveWorkbook.Worksheets(str_Worksheet_Name).DisplayPageBreaks = False ActiveSheet.DisplayPageBreaks = False

  • 我尝试使用上面的PageSetup代码。那也没做到。

解决方案:见Mat's Mug的答案。 FitToPagesTall = 1FitToPagesWide = 1也在设置Zoom = False后工作。我可耻地承认我很惊讶我之前没有发现这一点,因为它在微软的Dev Network网站上就是这样说的:

链接:MSDN Info

码:

 .Zoom = False 
 .FitToPagesTall = 1 
 .FitToPagesWide = 1

不知道为什么需要Zoom线,但这是缺失的一块。

感谢所有帮助过的人!

excel vba excel-vba
3个回答
3
投票

尝试删除任何Zoom,然后缩放PageSetup以适合单个页面:

ActiveSheet.PageSetup.Zoom = False
ActiveSheet.PageSetup.FitToPagesTall = 1
ActiveSheet.PageSetup.FitToPagesWide = 1

那应该是虚线。


2
投票

虚线只是显示页面将中断的位置。与插入的分页符无关。因此,删除分页符不起作用。除非您为Mats Mug指定一页宽/高,否则该页面仍会在某处打破。

如果您不想看到虚线,只需保存,关闭并重新打开。线条消失了。当然,预览或打印时它们会重新出现。

这是一个功能,而不是一个缺陷。


2
投票

在即时窗口中写下以下内容,然后按Enter键:

ActiveSheet.DisplayPageBreaks = Not ActiveSheet.DisplayPageBreaks

或者简单地在代码的末尾写一些或者简单的写 - 在VBA中编写ActiveSheet.DisplayPageBreaks = False

Worksheet.DisplayPageBreaks Property (Excel)

© www.soinside.com 2019 - 2024. All rights reserved.