行、列中最后非空单元格的获得(最后一行或列中存在非空单元格)

createh53个月前 (01-23)技术教程108

【分享成果,随喜正能量】职场,没有人关心你快不快乐,所有人都会看你有没有用。VBA可以给您带来快乐,证明您的价值。

《VBA代码解决方案》这套教程是我最早推出的教程,目前已经是第二版修订了。这套教程定位于入门后的提高,在学习这套教程过程中,侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一下把自己喜欢的代码摆好。

这套教程共三册,一百四十七讲,内容覆盖较广,也是初级和中级间的过度教程,改版后的内容主要是提供程序源码文件及代码修正为32位和64位兼用代码。今后一段时间会给大家陆续推出。今日的内容是第6讲:行、列中最后非空单元格的获得

第六讲 利用VBA获得指定行、列中最后一个非空单元格

使用VBA对工作表进行操作时,经常需要定位到指定行或列中最后一个非空单元格,此时可以使用Range对象的End属性,在取得单元格对象后便能获得该单元格的相关属性,如单元格地址、行列号、数值等,如下面的代码所示。

1 利用End()属性获得指列中的最后一个非空单元格的代码

Sub mynz_6_1() '第6讲 利用VBA获得指定行、列中的最后一个非空单元格

Dim rng As Range

Set rng = Sheets("6").Range("A1048576").End(xlUp)

MsgBox "A列中最后一个非空单元格是" & rng.Address(0, 0) & ",行号" & rng.Row & ",数值" & rng.Value

Set rng = Nothing

End Sub

2 代码的解读及实现效果

代码解析:

1) ENDRow过程使用消息框显示工作表中A列最后非空单元格的地址、行号和数值。

2) End属性返回一个Range对象,该对象代表包含源区域的区域尾端的单元格。等同于按键<End+向上键>、<End+向下键>、<End+向左键>或<End+向右键>,

语法如下:

expression.End(Direction)

参数expression是必需的,一个有效的对象。

参数Direction是可选的,所要移动的方向,可以为下表所示的XlDirection 常量之一。如下表:

c) Range对象的End属性返回的是一个Range对象,因此可以直接使用该对象的属性和方法。

运行ENDRow过程结果下图所示。

3 获得指行中的最后一个非空单元格的代码

通过修改相应的参数,能够获得指定行中最后一个非空单元格,如下面的代码所示。

Sub mynz_6_2() '第6讲 利用VBA获得指定行、列中的最后一个非空单元格

Dim rng As Range

Set rng = Sheets("6").Range("xfd1").End(xlToLeft)

MsgBox "第一行中最后一个非空单元格是" & rng.Address(0, 0) & ",列号" & rng.Column & ",数值" & rng.Value

Set rng = Nothing

End Sub

代码解析:过程使用消息框显示工作表中第一行最后一个非空单元格的地址、列号和数值、

运行效果:

上面的代码中充分应用了End属性,在实际的工作中我们也是经常利用到的一个属性,用于检测数据的录入情况,运行后可以知道非空单元格的数目多少,然后可以利用FOR,NEXT

循环,这样可以减少内存的使用,提高程序的运行效率。

今日内容回向:

1 expression.End(Direction) END属性用哪些利用价值。

2 Direction 值有哪些?

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

第7套教程(共三册):《VBA之EXCEL应用》:是对VBA基本的讲解

第1套教程(共三册):《VBA代码解决方案》是入门后的提高教程

第4套教程(16G):VBA代码解决方案之视频(第一套的视频讲解)

第3套教程(共两册):《VBA数组与字典解决方案》:是对数组和字典的专题讲解

第2套教程(共两册):《VBA数据库解决方案》:是对数据库的专题讲解

第6套教程(共两册):《VBA信息获取与处理》:讲解VBA的网络及跨程序应用

第5套教程(共两册):VBA中类的解读和利用:类及接口技术的讲解

第8套教程(共三册):VBA之Word应用(最新教程):word中VBA的利用

上述教程的学习顺序:

① 7→1→3→2→6→5或者7→4→3→2→6→5。

② 7→8

  • 如何学习VBA呢? 概括的说就是: 学习过程中要信、解、受、持,更要有回向的业力。无论您在学习的任何阶段,都要对照教程的知识点加持自己的实际工作,总会有丰厚的收获。

相关文章

Android L 64位模拟器终于来了:x86独享

Google I/O 2014大会已经过去了很久,64位的Android L依然停留在纸面上,但现在至少可以让开发者们先行品尝品尝了:64位的Android L模拟器已经发布。这次公布的模拟器镜像是专...

AMD 64位ARM处理器开卖:只是开发板

2014-08-01 09:00:00 [ 驱动之家 转载 ] 5月份,AMD公开展示了自家的第一颗ARM架构处理器“Opteron A1100”,代号“西雅图”(Seattle)。与之搭配的是一套开...

最全面的44个Java性能调优细节(java系统性能调优)

我认为,代码优化的最重要的作用应该是:避免未知的错误。在代码上线运行的过程中,往往会出现很多我们意想不到的错误,因为线上环境和开发环境是非常不同的,错误定位到最后往往是一个非常小的原因。然而为了解决这...

24道几乎必问的JVM面试题,我只会7道,你能答出几道?

前言Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键,所以在面试Java岗的时候JVM几乎是必问的,所以今天我总结了24道JVM相对来说有代表性的面试题,希...

Java开发环境搭建(Java开发环境搭建及配置实验的步骤图)

手把手教你Java开发环境搭建JDK下载安装:JDK8(主流)→安装地址①在我的电脑属性查看电脑版本(32or64位)②选择对应版本下载(下载需要注册Oracle账号③双击安装JDK(记住自己的安装路...

在Windows 10下搭建Java环境(使用jdk-13.0.1)

一、初识JDK、JRE和JVM对于使用Java语言的开发者来说,在安装开发工具(Eclipse等)之前首先需要安装JDK(Java Development Kit,Java开发工具包)。它是整个JAV...