【问题标题】:macro that prints visible area after filter in excel在excel中过滤后打印可见区域的宏
【发布时间】:2016-12-16 04:17:32
【问题描述】:

我有一个基于column A 值过滤表格的宏。现在我想在过滤器之后打印可见行,但遗憾的是它会打印所有行,包括在过滤器期间隐藏的顶行和底行。

在我的工作表中,有来自Column A:I 的数据,但打印区域应该只有Columns C:I - 过滤后可见行。

以下是迄今为止我尝试过但不起作用的代码:

代码1:

  ActiveSheet.PageSetup.printarea = Range("C3:I81000").Rows.SpecialCells(xlCellTypeVisible)

代码 2:

 Dim lastrow As Long
 lastrow = ActiveSheet.UsedRange.Rows.Count
 Range(Cells(3, 3), Cells(lastrow, 9)).Select
 ActiveSheet.PageSetup.printarea = Selection.Address

还有其他建议吗?

【问题讨论】:

  • 如果我有一组过滤后的数据,则只打印 可见 的数据 - 我什至找不到任何允许我打印隐藏的数据的选项数据。 (这意味着 PrintArea 可以保持为 C3:I81000 而不必担心只选择可见单元格。)我很想知道你是如何管理打印隐藏的东西的。
  • 我认为下面的一些行中有一些额外的格式,所以即使它们是空的,它们也被认为是使用的行。所以我删除了这些行并调整了 CODE 1。它终于可以工作了!谢谢!

标签: excel vba printing filter


【解决方案1】:

最后,这段代码成功了! :) 谢谢大家!

  ActiveSheet.PageSetup.PrintArea = Range("C3:I" & lastrow).Rows.SpecialCells(xlCellTypeVisible).Address

【讨论】:

    【解决方案2】:

    根据您需要的代码,我刚刚确认以下 sn-p 有效:

    Public Sub Test()
        Range("C3").Select
        Range(Selection, Selection.End(xlToRight)).Select
        Range(Selection, Selection.End(xlDown)).Select
        ActiveSheet.PageSetup.PrintArea = Selection.Address
        'ActiveSheet.PrintOut
    Range("C3").Select
    End Sub
    

    仅当您希望将命令发送到打印机时,请激活“打印输出”行。

    出于某种原因。行的“选择”比选择行的其他选项更适合隐藏/过滤的单元格。

    希望有所帮助 最好的 苏尔伯格1

    【讨论】:

    • 感谢您的回复。所以我尝试了你的代码,问题是它只突出显示带有数据的单元格。我的列表到处都有随机空格,所以这不能正常工作,它只选择了列表的一部分。我想我需要知道过滤器后的顶行号和最后一行号,然后我可以将这些值用于打印区域范围..这有意义吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多