Excel中列宽知多少

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/taller_2000/article/details/86688203

在无法预知单元格内容的情况下,一般都会使用自适应列宽,代码如下。

ActiveSheet.Columns(1).EntireColumn.AutoFit

这样操作会带来一个潜在问题,如果该列中某个单元格被意外填充了长字符串,将导致整个列宽都非常大,所以很多时候会在代码中直接指定列宽的值,设置第一列列宽代码如下。

Columns(1).ColumnWidth = 10

大家可能会想到,Range对象有Width属性,一列之中单元格宽度肯定是一致的,是否可以直接使用如下代码举行设置呢?

Range(1, 5).Width = 50

Range对象的Width属性是只读的,所以只能使用ColumnWidth属性设置列宽。
搞明白用哪个属性了,那么这个10的计量单位又是什么呢?一个列宽单位等于常规样式中一个字符的宽度, 对于比例字体(指字符宽度不尽相同的字体,与之相对的是等宽字体),会使用字符 0(零)的宽度。设置列宽为10之后的效果如下图所示。第一列的列宽整好显示十个0(A1单元格),A2单元格中有11个0,最后一个0显示在A列右边界之外。

此时使用Range(1, 1).Width查询单元格的宽度,其结果为 67.875,这又是什么鬼?明明设置的列宽为10,怎么得到这么一个结果!?问题的根源是,Range对象的Width属性返回值单位是磅(Point简写为Pt,这是一个绝对计量单位,等于 1英寸/72),而不是设置ColumnWidth属性时的列宽单位。使用Range(1, 1).ColumnWidth属性时,返回值为10。
讲到这里,大家就明白ColumnWidth属性和Width属性的区别了吧!

猜你喜欢

转载自blog.csdn.net/taller_2000/article/details/86688203