如何以绝对单位设置列宽

我想通了,并在下面发布了问题陈述和解决scheme:

我一直在努力,所以我创build的电子表格中的边距和列宽都是相同的,而不pipe用户设置如何,以便它为所有用户打印相同。 我能想出的唯一方法是使用两个macros。 一个macros将测量行,列和边距,并将其存储在一个PC上的excel文档的单元格上,所有内容都按照它的样子打印。 第二个macros在用户打印之前将这些值和边距等设置为正确的值。

我的问题是,ColumnWidth函数测量单位与默认字体绑定的行,可以在用户设置中更改。 为了解决这个问题,我尝试使用.width(以pts为单位),但是我知道这个函数可以测量宽度但是不能设置。 但是我意识到,我所要做的就是在第二个macros中select一个列进行测量,然后使用该测量和原始测量来导出转换因子。

这里是第一个macros的列测量部分(我最初有一个循环,但我意识到我只需要测量一列):

'Collumn Width .Cells(249, 84).Value = .Cells(1, 1).Width For i = 1 To 65 .Cells(250 + i, 81).Value = .Cells(1, i).ColumnWidth Next i 

这里是第二个macros的修正列宽设置部分与适当的转换因子:

 'Set Column Widths '[column width in current font] '*[correct width of any collumn in pts]/[current width of same column in pts] For j = 1 To 65 With ActiveWorkbook.ActiveSheet .Columns(j).ColumnWidth = .Cells(250 + j, 81).Value * _ .Cells(249, 84).Value / .Cells(1, 1).Width End With Next j 

我相信RowHeight属性以点为单位设置高度。 它是根据默认字体大小设置宽度的columnWidth属性。

但是,列的宽度属性以磅为单位读取宽度。 您可能无法准确设置列宽,但这里有一个方法可以让您closures,将高度和宽度设置为72点。

 Option Explicit Sub SetWidthHeightPoints() Const dWidth As Double = 72 Const dHeight As Double = 72 Dim RW As Range, COL As Range Set RW = ActiveSheet.Rows(1) Set COL = ActiveSheet.Columns(1) RW.RowHeight = dHeight COL.ColumnWidth = dWidth / COL.Width * COL.ColumnWidth COL.ColumnWidth = dWidth / COL.Width * COL.ColumnWidth MsgBox "Row Height: " & RW.Height & vbLf & "Column Width: " & COL.Width End Sub 

使用.RowHeight。

更多信息在这里和这里 。