我们知道 , Range对象的Width属性能够返回单元格的宽度 , 但不能够给Width属性赋值以指定单元格的宽度 。要设置单元格的宽度 , 可以使用ColumnWidth属性 , 当然 , 该属性也可以返回单元格的宽度值 。
单元格的宽度也就是单元格所在列的列宽 。在VBA帮助中明确指出 , 列宽的1个单位等于采用标准样式的1个字符的宽度 。对于比例字体 , 使用字符0的宽度 。Width属性以磅为单位返回列宽 。
如果我们要设置列的宽度(width)为100磅 , 使用下面的语句:
WithActiveSheet.Range(“A1”)
.ColumnWidth = 100 / .Width * .ColumnWidth
End With
并不会等于100 。
奇怪的是 , 如果循环2至3次 , 则会得到接近目标宽度的值 。测试代码如下:
Sub testwidth()
【Excel列宽的秘密】Dim i As Long, j As Long
With ActiveSheet.Range(“A1”)
For i = 100 To 300 Step 100
.ColumnWidth = 8.38
Debug.Print “——“& i & “——”
For j = 1 To 3
.ColumnWidth = i / .Width *.ColumnWidth
Debug.Print j, .ColumnWidth,.Width
Next j
Next i
End With
End Sub
结果如下图1所示 。
文章插图
图1
基本上 , 经过最多两次循环后 , 所得到的列宽值与目标值之差在0.25 。循环3次后 , 所行到的列宽值基本上稳定下来并等于或者接近目标值 。
推荐阅读
- Excel动画图表原理
- excel表格循环引用原理及应用
- 怎么工作表中的数据老是自已在变?——这是易失性函数在作怪
- excel函数SERIES公式
- excel表格中Range对象是什么
- excel表格名称的秘密
- 小心!Excel的保护工作表/工作簿密码很容易破解
- 古早彩妆盘点!「时代的眼泪」你中了几枪?
- 二 临安市茶叶杀青机械的发展史
- 茶名纵横杂趣多