您的位置 首页 > 数码极客

【不同单元格格式太多怎么解决】Excel提示不同的单元格格式太多,利用VBA彻底解决!

今天也根据读者的要求,使用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 A = False

4 On Error Resume Next

5 For Each s In T

6 If Not s.BuiltIn Then s.Delete

7 Next

8 A = True

9 MsgBox ("OK")

10 End Sub

很简单的几行代码,往往能解决很大的问题。代码讲解:

(1)A = False

A = True

上述语句是成对出现的,前者是关闭屏幕更新,以提高程序的效率;后者是打开屏幕刷新,

(2)On Error Resume Next

忽略错误,继续执行

(3)第五行和第七行构成了一个FOR NEXT语句,此语句在之前的文章中讲过,不过这里用的是For Each s In T,翻译过来就是说对于这个工作表中所有的格式将进行的操作,什么操作呢?就是:

If Not s.BuiltIn Then s.Delete 执行到这里,所有的自定义格式全部被删除掉了。

(4)最后全部执行完成弹出对话框:MsgBox ("OK")

看我们的代码截图:

剩余的工作就是,画个按钮,连锁上述代码,就可以了,经测试,这个方法还是可行的,如有遇到这个问题的读者可以试试看啊。

今日技巧提示:

1 A = False;A = True

的作用是什么?能否单独出现?

2. On Error Resume Next 作用是什么?

3,For each next 语句是否理解呢?

关于作者: admin

无忧经验小编鲁达,内容侵删请Email至wohenlihai#qq.com(#改为@)

热门推荐