为什么 Range.ColumnWidth 的单位与点或厘米不匹配(使用默认单位)

Why does the units of Range.ColumnWidth not match either points or Centimeters (default unit used)

我正在 Access 数据库中生成一个 VBA 子例程,它生成一个 Excel 文件,但是当我使用以下方法修改列宽时:

Range("A:A").ColumnWidth = ...

根据测量单位产生混合结果。 Excel 在选项中设置的默认测量值是厘米。我尝试以点和厘米为单位输入值,但结果要么太宽要么太小(见下文):

Range("A:A").ColumnWidth = 3.07 'In Centimeters - Too small
Range("A:A").ColumnWidth = 87.02 'In Points - Too big

根据文档 Range.ColumnWidth 使用以点为测量单位的测量值(宽度为 0)设置。无论我输入什么值,结果都不一样。

.ColumnWidth 属性 指的是您可以在不超过单元格宽度的情况下以默认字体在单元格中键入零的数量。

在一个新工作簿中,假设您的默认列宽为 8.43,在一个单元格中键入 '000000000,您会看到第 9 个零溢出右单元格边框大约半个零。

要以磅为单位设置单元格宽度,请将 .ColumnWidth 设置为 points / cell.Width * cell.ColumnWidth。这里有一个问题,你必须设置它三遍才能关闭它,但它几乎永远不会准确。所以把.ColumnWidth赋值放在一个For Next循环里,设置三次。

请注意,.Width 属性 以磅为单位,您无法设置它。 .ColumnWidth 属性 处于 crazy-zero-width-measurement 中,您可以设置它。为什么要三遍,我也不知道

有关 'three times' 事物的一些测试结果,请参阅 http://dailydoseofexcel.com/archives/2004/06/01/column-widths-in-points/