我們知道,Range對(duì)象的Width屬性能夠返回單元格的寬度,但不能夠給Width屬性賦值以指定單元格的寬度。要設(shè)置單元格的寬度,可以使用ColumnWidth屬性,當(dāng)然,該屬性也可以返回單元格的寬度值。
單元格的寬度也就是單元格所在列的列寬。在VBA幫助中明確指出,列寬的1個(gè)單位等于采用標(biāo)準(zhǔn)樣式的1個(gè)字符的寬度。對(duì)于比例字體,使用字符0的寬度。Width屬性以磅為單位返回列寬。
如果我們要設(shè)置列的寬度(width)為100磅,使用下面的語(yǔ)句:
WithActiveSheet.Range(“A1”)
.ColumnWidth = 100 / .Width * .ColumnWidth
End With
并不會(huì)等于100。
奇怪的是,如果循環(huán)2至3次,則會(huì)得到接近目標(biāo)寬度的值。測(cè)試代碼如下:
Sub testwidth()
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
結(jié)果如下圖1所示。
圖1
基本上,經(jīng)過(guò)最多兩次循環(huán)后,所得到的列寬值與目標(biāo)值之差在0.25。循環(huán)3次后,所行到的列寬值基本上穩(wěn)定下來(lái)并等于或者接近目標(biāo)值。