所以,当你用07版本打开03版本;或者03版打开07版本(有兼容包);或者是往03版本拷贝07版本数据;或者是往07版本拷贝入03版本数据时,极易发生上述问题。如果一个工作表的数据既有03版本的又有07版本的,那么你非常的不走运,在你筛选时,很可能就是这个苦果。
问题的原因分析完了,那么怎么解决呢?
办法一:在工作表中刷格式,采用一个格式全部的刷一遍,但也不能很好的解决问题。
办法二:新建一个工作表,把原数据数值粘贴到新的工作表中,原来的格式全然没有了。
办法三:就是今天我们重点讲的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
很简单的几行代码,往往能解决很大的问题。代码讲解:
(1)Application.ScreenUpdating = False
Application.ScreenUpdating = True
上述语句是成对出现的,前者是关闭屏幕更新,以提高程序的效率;后者是打开屏幕刷新,
(2)On Error Resume Next
忽略错误,继续执行
(3)第五行和第七行构成了一个FOR NEXT语句,此语句在之前的文章中讲过,不过这里用的是For Each s In ThisWorkbook.Styles,翻译过来就是说对于这个工作表中所有的格式将进行的操作,什么操作呢?就是:
If Not s.BuiltIn Then s.Delete 执行到这里,所有的自定义格式全部被删除掉了。
(4)最后全部执行完成弹出对话框:MsgBox ("OK")
看我们的代码截图:
剩余的工作就是,画个按钮,连锁上述代码,就可以了,经测试,这个方法还是可行的,如有遇到这个问题的读者可以试试看啊。
今日技巧提示:
1 Application.ScreenUpdating = False;Application.ScreenUpdating = True
的作用是什么?能否单独出现?
2. On Error Resume Next 作用是什么?
3,For each next 语句是否理解呢?
分享成果,随喜正能量