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

问题描述 投票:7回答:1

我正在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)进行设置。无论我输入什么值,结果都不相同。

excel vba access-vba column-width
1个回答
8
投票

。ColumnWidth属性是指您可以使用默认字体在单元格中键入但不超过单元格宽度的零。

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

要以点为单位设置像元宽度,请将.ColumnWidth设置为points / cell.Width * cell.ColumnWidth。这是要解决的问题,您必须将其设置三下才能使其接近,但几乎永远不会准确。因此,请将.ColumnWidth分配放入For Next循环中,并将其设置三遍。

请注意,.Width属性以磅为单位,您无法进行设置。 .ColumnWidth属性采用crazy-zero-width-measurement,您可以进行设置。我不知道为什么要花三遍。

请参阅http://dailydoseofexcel.com/archives/2004/06/01/column-widths-in-points/,以了解有关“三倍”的某些测试结果。

© www.soinside.com 2019 - 2024. All rights reserved.