Excel打印区域

时间:2015-07-21 14:37:31

标签: excel excel-vba vba

我希望能够在横向模式下打印A:H列中的所有内容,我想知道是否有人知道如何执行此操作,以便每当您打开此特定文档并尝试打印时,它都会在这些特定设置下自动打印。另外我只想打印实际存在文本的地方并避免打印空白区域(我在所有单元格中填充了方程式A1:H50,但实际上我只有正确填充的数字(但这会随着时间的推移而变化)在单元格上A1:H30。即A31:H50现在都用空格字符填充"")#/ p>

此外,我的文档的第一行有标题,我希望为我打印的每个页面显示这些标题。 (即1年前股票名称,股票价格,股票价格的标题,然后这些列填充30股票)。我想这样,如果我有4页(可变)的信息最终被打印,那么最上面的股票名称和价格总是打印在每页的顶部。

非常感谢!

2 个答案:

答案 0 :(得分:0)

好的,你问了几个不同的问题,有些问题比其他问题更容易回答。

首先,您希望在每次有人打印页面时设置要打印的特定区域(A1:H50),并且您希望它以横向打印。这很简单 - 转到页面布局功能区,选择区域A1:H50,然后单击打印区域 - >设置打印区域。然后在旁边,单击方向 - >横向。

关于设置标题的第三个问题也很简单。再次转到页面布局功能区,然后单击“打印平铺”。您可以单击“工作表”选项卡并告诉它在顶部重复某些行,也可以单击“页眉/页脚”并自行键入标题。

你的第二个问题没有一个简单的自动化方法(我知道。要么接受打印输出中会包含空格这一事实(无论如何都很好,因为你可能希望每个页面间隔相同)无论如何,无论填充多少行,或手动“隐藏”空白行。

这里可以使用VBA自动化解决方案,但我不建议您使用自动化解决方案,而这种解决方案对于手动操作非常简单的事情并不了解。

请注意,此问题并不适合此网站。这是一个更适合superuser.com的问题,它与stackoverflow.com属于同一组网站,但是面向有关软件的非编程问题 - 特别是Excel。

答案 1 :(得分:0)

每次用户尝试打印时,您都可以使用BeforePrint事件将打印区域重置为您的规格。无论用户尝试选择哪种设置,它都会覆盖您在事件代码中指定的设置。尝试将以下代码放在ThisWorkbook模块中:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Application.PrintCommunication = False
    With ThisWorkbook.Sheets("Sheet 1")
        .AutoFilterMode = False
        .Range("$A:$H").AutoFilter Field:=1, Criteria1:="<>", Operator:=xlFilterValues  'if column A (Field:=1) is blank then hide those rows before setting print range
        With .PageSetup
            .Orientation = xlLandscape
            .PrintArea = "$A:$H"
            .PrintTitleRows = "$1:$1" 'change to whichever row numbers you want to print on every page
        End With
    End With
    Application.PrintCommunication = True
End Sub

这样做的潜在好处是,它不允许用户以您指定的格式以外的任何格式打印它。如果您不想限制用户以不同格式打印它的能力,您可以在非事件Sub中使用相同的代码,并让用户在需要时运行该宏用这些设置打印出来。