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

我在一个Access数据库中生成一个VBA子例程生成一个Excel文件,但是当我修改列的宽度使用:

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

根据测量单位产生混合结果。 Excel的默认度量选项是厘米。 我尝试input以厘米为单位的值,但结果不是太宽就是太小(见下面):

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

根据文档Range.ColumnWidth使用测量单位(宽度为0)中的测量进行设置。 不pipe我input的结果是不一样的。

.ColumnWidth属性是指可以在默认字体中input单元格的零的数量,而不会超出单元格的宽度。

在一个新的工作簿中,你的默认列宽是8.43,在单元格中input'000000000 ,你会看到第九个零点右边的单元格边界溢出了大约一半的零。

要设置点的单元格宽度,请将.ColumnWidth设置为points / cell.Width * cell.ColumnWidth 。 这是抓住了,你必须设置它三次才能closures,但几乎不会是确切的。 因此,将.ColumnWidth赋值放在For Next循环中并将其设置三次。

请注意.Width属性是在点,你不能设置它。 .ColumnWidth属性是疯狂的零宽度测量,你可以设置它。 为什么需要三次,我不知道。

有关“三次”事件的一些testing结果,请参阅http://dailydoseofexcel.com/archives/2004/06/01/column-widths-in-points/