的OP表示:
Excel应用程序的GUI显示单元作为的大小:
宽度:8.28(160像素)高度:24.6(41个像素),字体是Arial 20 pt。
首先让我澄清:所述应用GUI示出的列宽度和高度在十进制测量和一个像素测量,无论字体大小,屏幕大小,缩放等的对于任何这些因素,如果Excel栏宽为8.43,将总是定义为64 像素。其次,我有点困惑,因为我的版本的Excel(2010目前)和我以前的每个版本都记得有8.43的标准列宽等于64 像素;同样,15的标准行高等于20 像素,这似乎不符合OP的示例。
确定后,一个海报问“为什么?”一个原因:如果你调整列宽或行高,Excel允许在离散单元那,不幸的是,他们决定命名像素。也许它们在某些早期版本中与像素相关,但它们看起来与所用单位一样随机 - 8.43是什么,英寸,皮卡,?不缇,这是肯定的!在这里,我将它称为十进制单元。
无论如何,对于所有列宽超过1.00,那个离散的像素单位是十进制单位的1/7。奇怪的是,1.00以下的列宽被分成12个单位。因此,是离散宽度可达2.00十进制单元如下:
0.08, 0.17, 0.25, 0.33, 0.42, 0.5, 0.58, 0.67, 0.75, 0.83, 0.92, 1.00,
1.14, 1.29, 1.43, 1.57, 1.71, 1.86, 2.00
与等于2.00 19个像素。是的,我会停下来,而你难以置信地摇头,但他们是这样做的。
幸运的是,行高看起来更均匀,其中像素等于0.75十进制单位; 10 像素等于7.50;标准行高20 像素等于15.00;等等。以防万一,你应该永远需要这些随机离散单位之间的转换,这里有一对夫妇的VBA功能,可以这样做:
Function ColumnWidthToPixels(ByVal ColWidth As Single) As Integer
Select Case Round(ColWidth, 4) ' Adjust for floating point errors
Case Is < 0:
ColumnWidthToPixels = ColumnWidthToPixels(ActiveSheet.StandardWidth)
Case Is < 1:
ColumnWidthToPixels = Round(ColWidth * 12, 0)
Case Is <= 255:
ColumnWidthToPixels = Round(12 + ((Int(ColWidth) - 1) * 7) _
+ Round((ColWidth - Int(ColWidth)) * 7, 0), 0)
Case Else:
ColumnWidthToPixels = ColumnWidthToPixels(ActiveSheet.StandardWidth)
End Select
End Function
Function PixelsToColumnWidth(ByVal Pixels As Integer) As Single
Select Case Pixels
Case Is < 0:
PixelsToColumnWidth = ActiveSheet.StandardWidth
Case Is < 12:
PixelsToColumnWidth = Round(Pixels/12, 2)
Case Is <= 1790:
PixelsToColumnWidth = Round(1 + ((Pixels - 12)/7), 2)
Case Else:
PixelsToColumnWidth = ActiveSheet.StandardWidth
End Select
End Function
这些时髦值可能缇测量(http://en.wikipedia.org /维基/缇)。如果您想将缇转换为像素,请查看此Microsoft文章:http://support.microsoft.com/kb/94927 – ray 2011-05-07 02:08:46