Vba 修改当前打印区域以删除第一列
在Excel工作簿中,我有几个工作表,每个工作表包含一些敏感数据和一个表(ListObject)。打印时,仅表格应位于打印区域 为了实现这一点(以及设置其他打印默认值),我使用了Vba 修改当前打印区域以删除第一列,vba,excel,excel-2010,Vba,Excel,Excel 2010,在Excel工作簿中,我有几个工作表,每个工作表包含一些敏感数据和一个表(ListObject)。打印时,仅表格应位于打印区域 为了实现这一点(以及设置其他打印默认值),我使用了Workbook\u BeforePrint事件。我有两个sub将WS的值设置为当前工作表,将Table设置为第一个ListObject 但是,我有一个表,无法从中打印第一列。我能够确定工作表/表格的目标,但我不知道如何从打印区域中去掉第一列 .PrintArea = Table.Range.Address If WS.
Workbook\u BeforePrint
事件。我有两个sub
将WS
的值设置为当前工作表,将Table
设置为第一个ListObject
但是,我有一个表,无法从中打印第一列。我能够确定工作表/表格的目标,但我不知道如何从打印区域中去掉第一列
.PrintArea = Table.Range.Address
If WS.Name = "FileNameLength" Then
{ remove the frist column from the print area }
End If
您需要从打印范围中减去第一列中的单元格 像这样的事情应该让你开始:
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
没有进一步的代码,我不能裁剪它,但你应该能够适应以下
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
太好了,我没有那样想。感谢您的发帖:)在一个范围内的所有单元格中循环是一项巨大的开销,特别是当您在该范围内有60000多行时。所以这不是给我的,但是谢谢你的发帖。我更喜欢另一个答案!