修改当前打印区域以删除第一列

在Excel工作簿中,我有几个工作表,每个工作表都包含一些敏感数据和一个表(ListObject)。 打印时,只有桌子应该在打印区域。

为了达到这个目的(并设置其他打印默认值),我使用了Workbook_BeforePrint事件。 我有两个子设置WS的值到当前的WorkSheet和Table到第一个ListObject。

但是,我有一张表,我不能打印第一列。 我可以定位工作表/表格,但是我不知道如何从打印区域中删除第一列。

 .PrintArea = Table.Range.Address If WS.Name = "FileNameLength" Then { remove the frist column from the print area } End If 

没有进一步的代码,我不能定制它,但你应该能够适应以下…

 Sub StripFirstCol() Dim tbl As ListObject: Set tbl = ActiveSheet.ListObjects("Table1") Dim PrintRng As Range: Set PrintRng = tbl.Range Dim ws As Worksheet: Set ws = ActiveSheet With ws.PageSetup If ws.Name = "FileNameLength" Then .PrintArea = Intersect(PrintRng, PrintRng.Offset(0, 1)).Address Else .PrintArea = PrintRng.Address End If End With End Sub 

您需要减去打印范围的第一列中的单元格。

像这样的事情应该开始你:

  Dim aCell As Range Dim rng1 As Range Dim rng2 As Range Dim rng3 As Range Set rng1 = Table.Range Set rng2 = Range("Table1[[#Headers],[columnheadertext]]") Set rng3 = Nothing For Each aCell In rng1 If Intersect(aCell, rng2) Is Nothing Then If rng3 Is Nothing Then Set rng3 = aCell Else Set rng3 = Union(rng3, aCell) End If End If Next aCell 'rng3 is your new range to be printed .PrintArea = rng3