highlight.js

星期一, 6月 07, 2010

Excel VBA中Sort物件的SortMethod屬性值xlPinYin與xlStroke意義顛倒了?

今天在校對一本書時,發現Excel VBA中Sort物件的SortMethod屬性值xlPinYin與xlStroke意義似乎顛倒了?請看下圖,先以xlStroke為SortMethod屬性的值排序,結果筆畫多的「台北」排在「台中」之前:



再來以xlPinYin為屬性值排序,結果「台中(ㄓ)」排在「台北(ㄅ)」之前:



如果此時點選「資料」頁次的「排序」,在「排序」交談窗按下「選項」,會看到是「依筆畫排序」,而實際上排序結果的確是依據筆畫順序:



若回頭去看之前用xlStroke為屬性值排序的結果,顯然是依據注音符號排序,所以似乎這兩個常數在VBA中弄反了。

再進一步印證,如果用錄製巨集的方式,採用注音方式排序,錄製下來的巨集如下圖:



可以看到實際採用的是xlStroke常數,這樣看來,我的猜測應該是正確的。


PS:這目前在2007與2010中都測試過,都是同樣的結果。在網路上搜尋的結果,似乎在Office XP中的Excel 2002就會出現錄製結果常數值相反的問題,不過已經在Office SP3修正了。不曉得現在這個問題以後是否會修正?