前面一节,我们学习了如何用宏功能实现点击按钮跳转到指定的工作表,返回按钮的操作也是一样的,有同学还提到了要隐藏工作表的问题。

通过文件,选项,高级,此工作簿的显示选项里可以设置不显示工作表的标签,甚至连滚动条都可以不显示,这样看起来是不是就像某些常见的系统界面了。
今天我们来学习下如何用宏来实现查询功能。
下面是一份成绩表,有各个班级学生,语文、数学、英语三门的成绩。

我们希望通过下面的界面,输入学号点击查询按钮来查询学生的成绩。

具体的操作步骤如下:

1、插入按钮,命名为查询,
2、右键点击按钮,指定宏,录制宏,
接下来就开始录制宏了。
3、选中成绩查询表B6:F6区域,清除内容,(你可以跳过此步,录制宏好后测试下会发生什么)
4、点击成绩表,选择A1单元格,ctrl+A,全选数据区域,
5、点击高级筛选,筛选区域已经自动填进去了,我们只需要选定条件区域,成绩查询表B2:B3,
6、确定,
7、经过第六步,数据区域已经筛选出来了,选择成绩表中C1单元格,ctrl+shift+⬇,alt+;,复制,成绩查询表B6单元格,粘贴,
8、选择成绩表中E1单元格,ctrl+shift+⬇,ctrl+shift+➡,alt+;,复制,成绩查询表C6单元格,粘贴,
7、8两步的操作非常关键。
9、成绩查询表里选择第六行,删除,
10、成绩表里,清除筛选,随便选择一个单元格点击下,
11、返回成绩查询表。
停止录制,试试效果吧!尽管比较慢,但对于一个完全不懂代码又想学习VBA的小伙伴来说,值得练练手。
上面有些步骤,有人可能不知道为啥要那么操作,我是在错误中总结出来的步骤,只要不断的试,你可以按自己步骤试试,然后在对比下就知道为什么了。
下面我们打开VBE窗口看看代码:
Sub 成绩查询()
Range("B6:F6").Select '选择单元格区域B6:F6
Selection.ClearContents '清空内容
Sheets("成绩表").Select '选择成绩表
Range("A1:H109").Select '选择数据区域
Application.CutCopyMode = False
Application.CutCopyMode = False
Application.CutCopyMode = False
Range("A1:H109").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Sheets("成绩查询").Range("B2:B3"), Unique:=False '根据条件高级筛选
Range("C1").Select '选择C1单元格
Range(Selection, Selection.End(xlDown)).Select '向下选择到最后一个数据
Selection.SpecialCells(xlCellTypeVisible).Select '选择可见单元格
Selection.Copy '复制
Sheets("成绩查询").Select '选择成绩查询表
Range("B6").Select '选择B6单元格
ActiveSheet.Paste '粘贴
Sheets("成绩表").Select '选择成绩表
Range("E1").Select '选择E1单元格
Range(Selection, Selection.End(xlToRight)).Select '向右选择到最后一个数据
Range(Selection, Selection.End(xlDown)).Select '向下选择到最后一个数据
Selection.SpecialCells(xlCellTypeVisible).Select '选择可见单元格
Application.CutCopyMode = False
Selection.Copy '复制
Sheets("成绩查询").Select
Range("C6").Select
ActiveSheet.Paste
Rows("6:6").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp '删除第六行
Range("G1").Select
Sheets("成绩表").Select
ActiveSheet.ShowAllData '清除筛选
Range("I1").Select
Sheets("成绩查询").Select
Range("H1").Select
End Sub
代码后面的汉子是我做的注释,想学习代码但又不知道如何操作的的同学,通过录制宏,研究代码的办法学习,我觉得相当不错。
先对代码有个大概了解,比如清除内容、清除筛选、选择单元格、选择单元格区域、向下选择到最后一个数据,向右选择对最后一个数据之类的表达,以后看书时就会很容易明白了。
转自: 米宏Office