乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > excel2007兼容包-Excel提示不同的单元格格式太多,利用VBA彻底解决!

excel2007兼容包-Excel提示不同的单元格格式太多,利用VBA彻底解决!

作者:乔山办公网日期:

返回目录:excel表格制作

今日也是应读者的需求利用VBA解决实际问题。学而不用则殆!学习了新的知识就是要不断的利用,提升,再利用再提升。所以要给这位提问题的朋友点赞!


有的读者问:如何利用VBA来解决Excel提示不同的单元格格式太多的问题。


首先,我们先分析一下这个情况是什么时候发生,一般有几种情况会发生这类问题。


1、复制粘贴时,这时会提示单元格格式太多,无法粘贴,而且要经过长时间的不知在做什么的处理过程,然后,EXCEL崩溃。你只能重启。


2、在移动工作表时,将工作表整体从一个文件转移到另一个工作表时,也会出现这个问题,现象和上述一样。


3 、在筛选数据时,有时候,在筛选一个值时,往往会出现上述的提示,当你按确认键后,EXCEL会再次计算,好在不会崩溃,只是时间非常长,这种情况往往出现在这个工作表的数据量巨大,往往是1万行以上的数据。


其次,我们分析一下上述问题产生的原因。其实这类问题的产生不是用户的错,而是OFFICE系统,或者说,EXCEL从03版升级到07版之后,带给用户的 一个遗留问题,他们潇洒的升级完了,但留下了一堆苦果让用户去慢慢品尝。为什么这么说呢?一点也不过分!03版和07版不兼容就是罪魁祸首。在07版加入了很多全新的内容,这些在03版及低版本无法显示,才出现了上述的问题。


所以,当你用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 语句是否理解呢?


相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网