打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
学习VBA,报表做到飞 第一章 入门篇 1.10 END语句通常用法
userphoto

2023.04.05 云南

关注

第一章 入门篇

1.10 END语句通常用法

上一节我们讲了END语句的基本用法,但在日常写VBA程序时,我们通常不那么写,为什么呢?

平时应用END语句定义边界时,由于表内可能存在空格,如果用xlDown、xlToRight来定义数据区域的下边界和右边界,系统定义到空格时就停止了,造成定义不准确。

科目
姓名

语文

数学

美术

体育

A同学

86

50

58

46

B同学

50

100

65

57

48

C同学

99

30

50

72

34

44

47

91

88

E同学

94

55

33

38

67

F同学

28

76

32

73

66

比如上图,以“a1”单元格为基准单元格,用xlDown定义下边界,系统判断到“C同学”单元格就停止了,所以Range('a1').End(xlDown).Row返回的是4;用xlToRight定义右边界,系统判断到“数学”单元格就停止了,所以Range('a1').End(xlToRight).Column返回的是3。这样执行程序就会有错误的结果。

那我们应该怎么写来定义数据的边界呢?别着急,先让我们来看看row和rows的区别。

row返回单元格所在行的行号,如果是区域,就返回这个区域的首行的行号。

例如Range('c5').Row 返回'c5'单元格所在行的行号5

rows代表行的集合,返回range对象。

Rows.Select 选择所有行

Rows('1:10').Select 选择1-10行

写VBA程序时,我们通常会用到rows.count与columns.count:

rows.count 获取最大行号

columns.count 获取最大列号

一般应用时,定义下边界,会用rows.count,先到表格的最下边界,也就是表格能容许的最大行号,再用xlUp向上找到数据区域的最下面一行,以此来定义数据区域的下边界;定义右边界,会用columns.count,先到表格的最右边界,也就是表格能容许的最大列数,再用xlToLeft向左找到数据区域的最右面一列,以此来定义数据区域的右边界。

上节的END语句程序可以修改成这样:

Sub END语句2()

h = Cells(Rows.Count, 1).End(xlUp).Row

l = Cells(1, Columns.Count).End(xlToLeft).Column

For i = 2 To h

For n = 2 To l

If Cells(i, n) < 60 Then

Cells(i, n).Interior.ColorIndex = 3

End If

Next

Next

End Sub

这样修改以后,程序执行出错的机率就小多了。当然,如果你能确保要处理的表格里没有空格,直接用上节那个简单的程序就足够了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
vba中表示最后一个非空单元格的行号、列号
多工作表合并【Excel分享】
VBA最大行列号2有数据区域
0基础学习写一个多表汇总宏模板!
关于VBA中单元格和区域的选择与定位问题
精彩实用的十则VBA语句赏析
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服