excel表格_excel函数公式大全_execl从入门到精通
EXCEL之VBA应用实例-快速准确找到已使用区域最后一个单元格2024-02-22 20:34:52
VBA(宏)最大的好处就是可以实现自动化,前提要知道这个表格的的大小及位置你才能通过代码对一些数据大小不固定的表格去执行一系列自动化流程,大大减少工作时间、提高工作效率。需要操作的数据越大越能体现VBA(宏)的优点。所以获取一个表格的开始单元格(开始行和列)和最后一个单元格(最后一行和最后一列)就非常重要,也是经常要使用到的。这一次分享的就是如何快速准确获取已使用区域的开始和结束单元格位置。
不规则表格表格区域都是一个正四边形,如果表格是不规则的,则取其中已使用单元格数量最大的一行和已使用单元格数量最大的一列组成一个已使用区域,如上图所示,它使用的区域范围是C1:H6,这个区域内的空白单元格也算,下面几张图片是本次分享代码的一个运行效果,其中查找最后一个单元格有两种方法,一种对隐藏的单元格无效,一种对隐藏的单元格有效,具体代码图片后有附上。
提示已使用区域第一个单元格的位置
提示已使用区域最后一个单元格
提示隐藏最后一行
隐藏后最后获取到的最后单元格发生变化
对隐藏的单元格设置并取消隐藏可以复制下面代码到VBA代码窗口,在一个空白工作表上运行看效果。复制代码到VBA代码窗口上可能会有一些多余的符号,请自行找到删除即可正常运行。
Sub 快速获取已使用区域开始和结束单元格()
Columns.ColumnWidth = 2
Range("C1:G5,H2,D6").value = 6
'上面两行只是演示所用,调整列大小和添加演示数据
'----------------下面是获取已使用区域左上角第一个单元格--------------
x = ActiveSheet.usedrange.Row '开始单元格行号
y = ActiveSheet.usedrange.Column '开始单元格列号
MsgBox ("已使用区域第一个单元格在第" & x & "行第" & y & "列,现在设置已经使用区域的第一个单元格背景色")
Cells(x, y).Interior.Color = RGB(250, 150, 200)
'为已使用区域第一个单元格设置背景色
'可以把上面三行代码直接写成下面一行
'Cells(ActiveSheet.usedrange.Row, ActiveSheet.usedrange.Column).Interior.Color = RGB(250, 150, 200)
'----------------上面的方法对隐藏的单元格有效--------------
'-------------下面是获取已使用区域最后的一个单元格-------------
Ex = Cells.SpecialCells(11).Row
Ey = Cells.SpecialCells(11).Column
'这上面两行是获取最后单元格的行和列,只对可见的单元格有效,对隐藏的行列等是无效的,specialcells前面可以是任意单元格,或区域或行或列等,后面(11)里的11是参数xlCellTypeLastCell相对应的值,就是最后一个单元格的意思,可以使用参数名称或相对应的数值表示,使用参数更容易阅读理解,使用数值可以精简代码。关于SpecialCells方法的使用,接下来我也会做一些演示文档和大家分享,喜欢的可以关注。
MsgBox "已使用区域最后一个单元格在第" & Ex & "行,第" & Ey & "列"
MsgBox "点击确认后把最后一行,也就是第" & Ex & "行隐藏"
Rows(Ex).Hidden = True
MsgBox "现在重新获取最后一个单元格的行和列"
vEx = Cells.SpecialCells(11).Row
vEy = Cells.SpecialCells(11).Column
MsgBox "重新获取隐藏原最后一行后的已使用区域最一个单元格在第" & vEx & "行,第" & vEy & "列"
'这里演示弹出窗口可以看到使用specialcells方法对隐藏单元格是无效的,找到的最后单无格已经位置已经发生变化,如果我们要操作的表格可能存在隐藏单元格,并且要对隐藏行操作就要换一种方法。
'------------如果要对可能隐藏的单元格有效,可以使用以下方法---------------
sc = ActiveSheet.usedrange.Columns.Count '已使用区域的总行数
Sr = ActiveSheet.usedrange.Rows.Count '已使用区域的总列数
'x = ActiveSheet.usedrange.Row '开始单元格行号,上面已经获取,放在这里方便说明
'y = ActiveSheet.usedrange.Column '开始单元格列号,放在这里方便说明
MsgBox "现在对使用后面这种对隐藏单元格有效的方法获取到的最后单元格设置背景色"
Cells(Sr + x - 1, sc + y - 1).Interior.Color = RGB(250, 150, 200)
MsgBox "点击确认后取消隐藏,看一下最后一个单元格是不是已经被设置了颜色。"
Rows(Ex).Hidden = False
End Sub
标签: excel返回单元格左边单元格