前景提要(文末提供源码下载)当我们的工作表的数据比较大的时候 , 我们有时候为了观察数据的方便 , 就会选择首行冻结,将标题行冻结 , 这样当我们在向下滚动报表的时候,首行是固定的,这样就不会影响我们观看数据了,能够准确的知道每一列数据所代表的的含义和对应的内容 。其实要实现首行冻结方法也是非常的简单,这是Excel自身就携带的功能
我们今天来看看用VBA如何实现
代码区其实应该有很多的小伙伴们会感觉到比较的疑惑 , 既然Excel自身已经存在了这样的功能,为什么我们还要尝试去通过VBA来实现呢?
其实这两有两个原因 ,
- 我们学习VBA,一方面为了提升工作效率,另外一方面也要尽可能的多接触一些非常用的功能,这些点点滴滴积累起来也能够给我们的日常操作带来很大的提速
- 有时候我们需要再VBA程序中实现某种功能,这个时候我们不可能让程序暂停,去手工操作Excel的,所以这些功能也是需要用过VBA自身代码来实现的
- 最后一点 , 是我个人的一个观点,既然要学,就尽量学精,学多,这也是我当初逼自己挤出时间学习的动力和初衷
先来看看首行冻结,这个比较的简单
这是我们第一份工作表 , 表头只有一行,我们就冻结首行就可以了 。
Sub 首行冻结()ActiveSheet.Cells(2, 1).Select '选择单元格A1ActiveWindow.FreezePanes = True '实现冻结窗格的功能End Sub
但是一行的表头还是比较少见的,更多的时候我们的习惯还是喜欢做成多行的表头 , 那么这样如何来实现了呢?
Sub 多行冻结()Dim rng As Rangeline:Set rng = Application.InputBox("请选择单元格", "确定要冻结行的下一行的单元格位置", , , , , , 8)If rng.Columns.Count > 1 Then MsgBox "请随机选择下一行的一个单元格即可,请重新选择!" GoTo line Else rng.Select ActiveWindow.FreezePanes = True '实现冻结窗格的功能End IfEnd Sub
来看看效果
成功的实现了我们的效果,不仅仅是可以首行,还可以根据我们的实际需要选择多行来实现 。
代码解析因为Excel本身已经存在了这个功能 , 我们这里只是根据需要来转化成为用VBA代码来实现,操作更加方便一点,也不用记哪一步应该操作什么,根据自己的需要制作出自己能够熟练操作的小脚本 。
今天的核心代码就这一句话 , 他就是实现窗体冻结的功能代码
ActiveWindow.FreezePanes = True
稍微说一下,这两个代码里面都有一个单元格的选择的操作,不同的首行冻结已经直接写死了,多行冻结可以根据自己的需要来选择
多行冻结中需要我们选择的单元格有几个要求
- 单个单元格 , 不能是多个,动图中已经展示了如果选择了多个,会报错
- 必须是冻结行紧挨着的一行的任意一个单元格,比方说要冻结前三行,那就在第四行选择一个单元格
这里会有一个判断,是判断选择单元格是否是多个的,这个方法如果还有小伙伴不清楚的话,可以翻看下我发布的VBA早间档的文章,不久之前才介绍过这个方法的详细说明 。
================================
本节课的案例源码已经上传 , 需要的小伙伴后台私信“7-73-7”,希望大家多支持~~,多多关注 ~ ~
【Excel自带功能流程繁琐?为什么不用VBA自己造呢?】好了,明晚19:00,准时再见!