让 Excel 根据每张 A4 纸预定的 x 行数自动设置行高吗?

让 Excel 根据每张 A4 纸预定的 x 行数自动设置行高吗?

我是 MS Excel 2010 的欧洲用户,我想到了一个奇怪的想法,比如我想要 31 行均匀地铺满整张纸(此处:A4),当然不包括页边距。

现在,有没有办法在 Excel 中做到这一点?如果没有,我该如何使用计算器计算所需的行高?或者也许在 Excel 中创建一个模板来为 Excel 计算这个?

我知道我可以通过一些手动计算自己摸索出第二种方法,但由于我已经想问这个有关 Excel 能力的问题,我希望你能理解我的懒惰。;)

提前感谢您的帮助!

答案1

假设您不反对在电子表格中使用 VBA,这是可能的。首先,如果您的功能区上还没有“开发人员”选项卡,请转到文件->选项,自定义功能区,然后在右侧面板中选中开发人员,然后单击确定。接下来,单击开发人员选项卡,然后单击 Visual Basic。在左侧,双击此工作簿并粘贴以下代码。根据需要更改配置。现在,每当您单击保存工作簿时,行都会自动调整为指定的参数。

值得注意的是,尽管计算结果并非如此,但页面上可能容纳超过 31 行;使用 Excel 的正常边距和页眉/页脚,一页可容纳 34 行。将边距和页眉/页脚更改为 0,一页可容纳 31 行。

因此,我建议使用打印预览仔细检查,如果每页的行数确实多于预期,则相应地减少 RowsPerPage。实际设置行高的分辨率有限,因此不幸的是它并不完美。无论如何,希望它能有所帮助。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

        ' Configuration
        RowsPerPage = 31            ' number of rows per page, as stated in question
        NumberOfPages = 1           ' how many pages of data you have
        NumberOfSheets = 1          ' How many spreadsheets are in use

        TargetPageHeight = 29.7     ' A4 height in cm

        ' Don't change anything below here
        TargetPageHeight = Application.CentimetersToPoints(TargetPageHeight)
        TotalRowCount = NumberOfPages * RowsPerPage + 1 'Resize beyond the specified area so a smaller row doesn't sneak in
        For sheetIndex = 1 To NumberOfSheets
            AvailablePageHeight = TargetPageHeight
            With Worksheets(sheetIndex).PageSetup
                AvailablePageHeight = AvailablePageHeight - (.TopMargin + .BottomMargin + .HeaderMargin + .FooterMargin)
            End With
            OptimalRowHeight = AvailablePageHeight / RowsPerPage
            currentIndex = 1
            With Worksheets(sheetIndex)
                While currentIndex <= TotalRowCount
                    Rows(currentIndex).RowHeight = OptimalRowHeight
                    currentIndex = currentIndex + 1
                Wend
            End With
        Next sheetIndex

End Sub

答案2

您可以设置 Excel,使其显示打印区域。检查功能区(视图/页面布局)然后您需要做的是选择所有 31 行并更改其中一行的高度。

相关内容