打开APP
userphoto
未登录

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

开通VIP
VBA实战技巧01: 在代码中引用动态调整单元格区域的5种方法

excelperfect

VBA代码中,经常要引用单元格数据区域并对其进行操作。然而,如果对数据区域采用“硬编码”地址,那么当该区域大小变化时,必须修改相应的引用该区域的代码。本文整理了可以动态引用数据区域的5种方法,供编写代码时参考。

方法1:使用UsedRange属性

工作表对象的UsedRange属性返回一个Range对象,代表工作表中已使用的单元格区域。代码:

Sub DynamicRange1() '刷新已使用区域 ActiveSheet.UsedRange '选择已使用区域 ActiveSheet.UsedRange.SelectEnd Sub

方法2:使用Ctrl+Shift+向右箭头键/向下箭头键

模拟使用快捷键Ctrl+Shift+右箭头,然后使用快捷键Ctrl+Shift+向下箭头来选择单元格区域。注意,如果第一行的最后一个单元格或者第一列的最后一个单元格为空,则本方法不会选择到正确的单元格区域。因此,本方法适用于数据区域的第一列在最后一行有值且第一行在最后一列有值的区域。

Sub DynamicRange2()    Dim wks As Worksheet    Dim lngLastRow As Long    Dim lngLastColumn As Long    Dim FirstCell As Range      '设置工作表和数据区域起始单元格    Set wks = Worksheets('Sheet1')    Set FirstCell = Range('C3')       With wks        '获取数据区域第一列中有数据的最后一行行号        lngLastRow = .Cells(.Rows.Count,FirstCell.Column).End(xlUp).Row        '获取数据区域第一行中有数据的最后一列表号        lngLastColumn = .Cells(FirstCell.Row,.Columns.Count).End(xlToLeft).Column        '选择数据区域        .Range(FirstCell, Cells(lngLastRow,lngLastColumn)).Select    End WithEnd Sub

方法3:SpecialCells方法——最后一个单元格

使用SpecialCells方法来查找工作表中包含数据的最后一个单元格。找到后,使用该单元格引用来确定最后的数据行和列。

Sub DynamicRange3() Dim wks As Worksheet Dim lngLastRow As Long Dim lngLastColumn As Long Dim FirstCell As Range '设置工作表和起始单元格 Set wks = Worksheets('Sheet1') Set FirstCell = Range('C3') '刷新已使用单元格区域 Worksheets('Sheet1').UsedRange '找到最后一行和列 With FirstCell.SpecialCells(xlCellTypeLastCell) lngLastRow = .Row lngLastColumn = .Column End With '选择单元格区域 wks.Range(FirstCell, wks.Cells(lngLastRow,lngLastColumn)).SelectEnd Sub

方法4:使用CurrentRegion属性

单元格对象的CurrentRegion属性返回当前单元格所在的数据区域,该区域上下左右都是空行。

Sub DynamicRange4()    Dim wks As Worksheet    Dim FirstCell As Range      '设置工作表和起始单元格    Set wks = Worksheets('Sheet1')    Set FirstCell = Range('C3')      '选择单元格区域    FirstCell.CurrentRegion.SelectEnd Sub

方法5:固定列

很多情况下,工作表数据区域的列是固定的,只是随着数据的添加,行数发生变化。此时,可以使用下面的代码:

Sub DynamicRange5() Dim wks As Worksheet Dim lngLastRow As Long Dim lngLastColumn As Long Dim FirstCell As Range '设置工作表和起始单元格 Set wks = Worksheets('Sheet1') Set FirstCell = Range('C3') '刷新已使用单元格区域 Worksheets('Sheet1').UsedRange '查找最后一行 lngLastRow = wks.Cells.Find('*',_ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious).Row '选择单元格区域 wks.Range('C3:E' &lngLastRow).SelectEnd Sub

上面介绍的方法适用情况稍有不同,你可以根据实际工作表数据来灵活选用。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
跟烟花入门VBA之69:单元格对象Range(十三)
VBA程序集(第2辑)
Excel应用实践04:分页单独打印Excel表中的数据
Range对象基本操作应用示例
总结Excel之VBA编程之引用单元格、区域的各种方法下篇
Excel 2007 Range对象开发指南 - 下
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服