【閒聊】一個EXCEL一直存在的問題



贊助商連結


cinta3344
2003-08-20, 09:50 AM
如果各位常常在各種格式方面做設定的話或者常接收來自初學者的XLS檔,應該也多少遇到我所遇到的情況,而個人從Office 95,97,2000到XP,這個問題M$少有改善,因此一方面將我的土方法野人獻曝,一方面也期望有高人指導更簡便的方法∼
ex.
1.原為「文字格式」變更為「日期」或「通用/一般」等格式後,排序會失敗(例如11111,2111,311,41四個直所在的儲存格原為文字格式,變更為通用或一般後,使用遞增排序依然沒有變換順序,但在XP會出現警告選項,基本上已更正錯誤)
2.VBA的比對問題:若A1的格式為通用,值為12345,A2的格式為文字,值也為"12345",稍有計算機基礎者都知道要將A1格式改為文字或A2改為通用或數字...等格式,以期讓他們的"資料型別?"相同,但問題來了,就算你更正了1000次,cells(1,1)=cells(2,1)這個判別式依然是False,小弟以前在寫日報比對程式時就吃過它的虧∼

其實以上兩個問題是同一種問題,基本上都是格式重設後Excel沒有"確實"更正的結果,而我發現只要重新進入儲存格編輯一次,格式就能正確被更正,而編輯的快速鍵是{F2},因此只要寫一個簡單的迴圈將你變更過格式的Range重新掃一次就好了,簡單範例如下:
Sub ResetCell()
for I=1 to 10
SendKeys "{F2}"
SendKeys "{Enter}" '會受USER變更ENTER鍵預設移動方向影響
next
End Sub

贊助商連結


leonchou
2003-08-20, 10:48 PM
我想"改變儲存格格式"是比較偏向外在的,
也就是「顯示格式」而已,本質上並沒有改變。
Excel僅認定改變格式後"重新輸入"的值,
這所謂「重新輸入」,即使只是進入編輯狀態
(滑鼠點兩下或按F2)再Enter就算數。
這是屢見不鮮而且也屢試不爽的,所以
問題只剩下「如何快速更新所有儲存格的值」..
如今cinta兄提供了一個很有建設性的解決方案,
謝謝你的分享! :)

補充一下,
SendKeys只會作用在目前儲存格,
所以在執行巨集前要先選取範圍的第一格,
或是直接在程式第一行Select第一格,
以免和想要的結果有出入。