有这样一张“学生”表,总行数大概2万行。现在需要将这些数据按照班级单独存放。比如“物教1班”的所有信息要有一张单独的“物教1班”表来保存,“人文99班”的所有信息要有一张单独的“人文99班”表来保存。
1、思路框架
由于数据有上万行,每一行的班级都不同,所以必须在一个循环结构中来完成。i从第2行开始,取到数据表的最后一行,每取一行,就把“绿色注释”的操作进行一遍。
2、判断指定名称的工作表是否存在
这个框架中,“如何判断指定名称的工作表是否存在”是一个新的要点。方法有很多,这里老谭给大家介绍效率最高的一种:错误捕捉。
看下面2行代码:
很简单对吗?就是把“成都”工作表赋值给对象变量sht,结果报错了。一开始老谭就截图给大家看过了,整个工作簿里只有“学生”表,并没有一个叫“成都”的工作表,所以赋值失败,报错了。
但是,我们如果加一行代码的话,可以让它不报错,继续往下执行。
看到了吗?“成都”表依然不存在,但是MsgBox能顺利提示消息。难道这里没有出错?再看一个对比实例:
左右两边代码唯一不同是赋值的工作表不一样。“成都”不存在,输出的Err.Number=9,“学生”是存在的,输出了Err.Number=0。
在VBA中,Err.Number叫做“错误编号”,我们不用深究它的具体意义,只需记住一句话:Err.Number=0表示没出错,Err.Number<>0表示出错。
结合工作表的赋值操作报错还是不报错,我们反过来思考一下,可以得出结论:Set sht = Worksheets('成都'),类似这样的赋值操作,如果Err.Number<>0(出错)表示该工作表不存在,Err.Number=0(没出错)表示该工作表存在。那么,下面这段代码应该不用多解释了。
3、完整代码
4、执行效果
Excel VBA的学习是一个比较辛苦的过程,建议初学者从模仿开始,多动手敲代码,能把老谭的代码从抄写到自己敲出来,说明你就已经上升到另一个台阶了,加油。
老谭的网络视频课程,系统、详细讲解,感兴趣的扫码开学!
喜欢老谭讲解的小伙伴多多点赞、多多推荐关注!
联系客服