平風造雨 | 【閒聊】一個EXCEL一直存在的問題 如果各位常常在各種格式方面做設定的話或者常接收來自初學者的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 |
回覆 |
Take it easy~ | 我想"改變儲存格格式"是比較偏向外在的, 也就是「顯示格式」而已,本質上並沒有改變。 Excel僅認定改變格式後"重新輸入"的值, 這所謂「重新輸入」,即使只是進入編輯狀態 (滑鼠點兩下或按F2)再Enter就算數。 這是屢見不鮮而且也屢試不爽的,所以 問題只剩下「如何快速更新所有儲存格的值」.. 如今cinta兄提供了一個很有建設性的解決方案, 謝謝你的分享! 補充一下, SendKeys只會作用在目前儲存格, 所以在執行巨集前要先選取範圍的第一格, 或是直接在程式第一行Select第一格, 以免和想要的結果有出入。 |
回覆 |
|
XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。