Excel VBA 7.73首行/多行冻结很实用,如何用VBA来实现相同的功能呢?

Excel VBA 7.73首行/多行冻结很实用,如何用VBA来实现相同的功能呢?


点击上方“Excel和VBA”,选择“置顶公众号”

致力于原创分享Excel的相关知识,源码,源文件打包提供

一起学习,一起进步~~


当我们的工作表的数据比较大的时候,我们有时候为了观察数据的方便,就会选择首行冻结,将标题行冻结,这样当我们在向下滚动报表的时候,首行是固定的,这样就不会影响我们观看数据了,能够准确的知道每一列数据所代表的的含义和对应的内容。其实要实现首行冻结方法也是非常的简单,这是Excel自身就携带的功能

我们今天来看看用VBA如何实现

场景说明

其实应该有很多的小伙伴们会感觉到比较的疑惑,既然Excel自身已经存在了这样的功能,为什么我们还要尝试去通过VBA来实现呢?

其实这两有两个原因

1 我们学习VBA,一方面为了提升工作效率,另外一方面也要尽可能的多接触一些非常用的功能,这些点点滴滴积累起来也能够给我们的日常操作带来很大的提速2 有时候我们需要再VBA程序中实现某种功能,这个时候我们不可能让程序暂停,去手工操作Excel的,所以这些功能也是需要用过VBA自身代码来实现的3 最后一点,是我个人的一个观点,既然要学,就尽量学精,学多,这也是我当初逼自己挤出时间学习的动力和初衷

好了,最近有点多愁善感,进入正题

先来看看首行冻结,这个比较的简单

这是我们第一份工作表,表头只有一行,我们就冻结首行就可以了。

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

稍微说一下,这两个代码里面都有一个单元格的选择的操作,不同的首行冻结已经直接写死了,多行冻结可以根据自己的需要来选择

多行冻结中需要我们选择的单元格有几个要求

* 单个单元格,不能是多个,动图中已经展示了如果选择了多个,会报错* 必须是冻结行紧挨着一行的任意一个单元格,比方说要冻结前三行,那就在第四行选择一个单元格
If rng.Columns.Count > 1 Then MsgBox "请随机选择下一行的一个单元格即可,请重新选择!" GoTo line Else *****End If

这里会有一个判断,是判断选择单元格是否是多个的,这个方法如果还有小伙伴不清楚的话,可以翻看下我发布的VBA早间档的文章,不久之前才介绍过这个方法的详细说明。

==========================

本节课的案例源码已经上传,需要的小伙伴后台私信“7-73-A8”,希望大家多支持~~,多多关注 ~ ~

好了,明晚21:00,准时再见!

因为公众号没有留言功能(开的比较晚),所以建立一个线下微信群,主要为大家提供一个交流的平台,同时大家也可以提一些对公众号的意见和看法,大家一起学习,一起进步。

(0)

相关推荐