今日也是應讀者的需求利用VBA解決實(shí)際問(wèn)題。學(xué)而不用則殆!學(xué)習了新的知識就是要不斷的利用,提升,再利用再提升。所以要給這位提問(wèn)題的朋友點(diǎn)贊!
有的讀者問(wèn):如何利用VBA來(lái)解決Excel提示不同的單元格格式太多的問(wèn)題。
首先,我們先分析一下這個(gè)情況是什么時(shí)候發(fā)生,一般有幾種情況會(huì )發(fā)生這類(lèi)問(wèn)題。
1、復制粘貼時(shí),這時(shí)會(huì )提示單元格格式太多,無(wú)法粘貼,而且要經(jīng)過(guò)長(cháng)時(shí)間的不知在做什么的處理過(guò)程,然后,EXCEL崩潰。你只能重啟。
2、在移動(dòng)工作表時(shí),將工作表整體從一個(gè)文件轉移到另一個(gè)工作表時(shí),也會(huì )出現這個(gè)問(wèn)題,現象和上述一樣。
3 、在篩選數據時(shí),有時(shí)候,在篩選一個(gè)值時(shí),往往會(huì )出現上述的提示,當你按確認鍵后,EXCEL會(huì )再次計算,好在不會(huì )崩潰,只是時(shí)間非常長(cháng),這種情況往往出現在這個(gè)工作表的數據量巨大,往往是1萬(wàn)行以上的數據。
其次,我們分析一下上述問(wèn)題產(chǎn)生的原因。其實(shí)這類(lèi)問(wèn)題的產(chǎn)生不是用戶(hù)的錯,而是OFFICE系統,或者說(shuō),EXCEL從03版升級到07版之后,帶給用戶(hù)的 一個(gè)遺留問(wèn)題,他們?yōu)t灑的升級完了,但留下了一堆苦果讓用戶(hù)去慢慢品嘗。為什么這么說(shuō)呢?一點(diǎn)也不過(guò)分!03版和07版不兼容就是罪魁禍首。在07版加入了很多全新的內容,這些在03版及低版本無(wú)法顯示,才出現了上述的問(wèn)題。
所以,當你用07版本打開(kāi)03版本;或者03版打開(kāi)07版本(有兼容包);或者是往03版本拷貝07版本數據;或者是往07版本拷貝入03版本數據時(shí),極易發(fā)生上述問(wèn)題。如果一個(gè)工作表的數據既有03版本的又有07版本的,那么你非常的不走運,在你篩選時(shí),很可能就是這個(gè)結果。
問(wèn)題的原因分析完了,那么怎么解決呢?
辦法一:在工作表中刷格式,采用一個(gè)格式全部的刷一遍,但也不能很好的解決問(wèn)題。
辦法二:新建一個(gè)工作表,把原數據數值粘貼到新的工作表中,原來(lái)的格式全然沒(méi)有了。
辦法三:就是今天我們重點(diǎn)講的VBA方法:
拷入下面的代碼:
Sub KK()
2 Dim s As Style
3 Application.ScreenUpdating = False
4 On Error Resume Next
5 For Each s In ThisWorkbook.Styles
6 If Not s.BuiltIn Then s.Delete
7 Next
8 Application.ScreenUpdating = True
9 MsgBox ('OK')
10 End Sub
很簡(jiǎn)單的幾行代碼,往往能解決很大的問(wèn)題。代碼講解:
(1)Application.ScreenUpdating = False
Application.ScreenUpdating = True
上述語(yǔ)句是成對出現的,前者是關(guān)閉屏幕更新,以提高程序的效率;后者是打開(kāi)屏幕刷新,
(2)On Error Resume Next
忽略錯誤,繼續執行
(3)第五行和第七行構成了一個(gè)FOR NEXT語(yǔ)句,此語(yǔ)句在之前的文章中講過(guò),不過(guò)這里用的是For Each s In ThisWorkbook.Styles,翻譯過(guò)來(lái)就是說(shuō)對于這個(gè)工作表中所有的格式將進(jìn)行的操作,什么操作呢?就是:
If Not s.BuiltIn Then s.Delete 執行到這里,所有的自定義格式全部被刪除掉了。
(4)最后全部執行完成彈出對話(huà)框:MsgBox ('OK')
看我們的代碼截圖:
剩余的工作就是,畫(huà)個(gè)按鈕,連鎖上述代碼,就可以了,經(jīng)測試,這個(gè)方法還是可行的,如有遇到這個(gè)問(wèn)題的讀者可以試試看啊。
今日技巧提示:
1 Application.ScreenUpdating = False;Application.ScreenUpdating = True
的作用是什么?能否單獨出現?
2. On Error Resume Next 作用是什么?
3,For each next 語(yǔ)句是否理解呢?
聯(lián)系客服