乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > Excel自带功能流程繁琐?为什么不用VBA自己造呢?-excel的使用

Excel自带功能流程繁琐?为什么不用VBA自己造呢?-excel的使用

作者:乔山办公网日期:

返回目录:excel表格制作

前景提要(文末提供源码下载)

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

Excel自带功能流程繁琐?为什么不用VBA自己造呢?

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

代码区

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

其实这两有两个原因,

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

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

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

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

Excel自带功能流程繁琐?为什么不用VBA自己造呢?

Sub 首行冻结()
ActiveSheet.Cells(2, 1).Select '选择单元格A1
ActiveWindow.FreezePanes = True '实现冻结窗格的功能
End Sub
Excel自带功能流程繁琐?为什么不用VBA自己造呢?

但是一行的表头还是比较少见的,更多的时候我们的习惯还是喜欢做成多行的表头,那么这样如何来实现了呢?

Sub 多行冻结()
Dim rng As Range
line:
Set rng = Application.InputBox("请选择单元格", "确定要冻结行的下一行的单元格位置", , , , , , 8)
If rng.Columns.Count > 1 Then
MsgBox "请随机选择下一行的一个单元格即可,请重新选择!"
GoTo line
Else
rng.Select
ActiveWindow.FreezePanes = True '实现冻结窗格的功能
End If
End Sub

来看看效果

Excel自带功能流程繁琐?为什么不用VBA自己造呢?

成功的实现了我们的效果,不仅仅是可以首行,还可以根据我们的实际需要选择多行来实现。

代码解析

因为Excel本身已经存在了这个功能,我们这里只是根据需要来转化成为用VBA代码来实现,操作更加方便一点,也不用记哪一步应该操作什么,根据自己的需要制作出自己能够熟练操作的小脚本。

今天的核心代码就这一句话,他就是实现窗体冻结的功能代码

ActiveWindow.FreezePanes = True

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

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

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

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

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

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

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

相关阅读

关键词不能为空
极力推荐

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