我是 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 行并更改其中一行的高度。