的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