打开APP
userphoto
未登录

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

开通VIP
VBA小技巧:确定工作表数据区域
userphoto

2022.09.03 四川

关注

excelperfect

在使用VBA编写程序时,有几种常用方法可以在工作表中查找包含已有数据的区域,但这些方法都多少存在一些局限。

  • Activesheet.Cells(1).CurrentRegion
如果已有数据区域中存在空行或空列,将无法获取正确的区域。
 
  • Activesheet.Cells(Activesheet.Rows.Count,1).End(xlUp).Row
如果某个单元格中的数据位于更大编号的行但位于不同的列中,则得到的结果不正确。
 
  • Activesheet.UsedRange
不是动态的。
 
  • 仅使用按行或列查找(Find方法)可能会错过更大列(如果按行搜索)或更大行(如果按列搜索)中的异常值单元格。
 
下面的代码是“万无一失”的,它返回位于最大行和最大列(如果是全新的工作表,则为 A1)相交叉处的单元格。在复制、遍历或清除数据时,使用此函数将确保不会遗漏任何内容。
'查找工作表中最后使用的单元格
Function LastUsedCell(wksToUse As Worksheet) As Range
    Dim dblRow As Double
    Dim dblCol As Double
    Dim rngFound As Range
   
    Set LastUsedCell = wksToUse.Cells(1, 1)
    On Error GoTo Err_Exit
   
    Set rngFound = wksToUse.Cells.Find(What:='*', _
       LookIn:=xlFormulas, _
       LookAt:=xlPart, _
        SearchOrder:=xlByRows,_
       SearchDirection:=xlPrevious, _
       MatchCase:=False)
   
    If (Not(rngFound Is Nothing)) Then
       dblRow = rngFound.Row
        Set rngFound = wksToUse.Cells.Find(What:='*', _
           LookIn:=xlFormulas, _
            LookAt:=xlPart, _
           SearchOrder:=xlByColumns, _
           SearchDirection:=xlPrevious, _
           MatchCase:=False)
       dblCol = rngFound.Column
        Set LastUsedCell = wksToUse.Cells(dblRow, dblCol)
    End If
 
Housekeeping:
    Set rngFound = Nothing
    Exit Function
Err_Exit:
    Err.Clear
    Resume Housekeeping
End Function
 
在使用这个函数时,如果仅需要最后一行或最后一列,则可直接使用代码:
dblLastRow = LastUsedCell(Activesheet).Row
 
如果设置数据单元格区域,使用代码:
With Activesheet
    Set rngToUse = .Range(.Cells(1,1), LastUsedCell(Activesheet))
End With
 
如果行列信息都需要,则使用代码:
Set rngLastCell = LastUsedCell(Activesheet)
For dblRow = 1 to rngLastCell.Row
    For dblCol= 1 to rngLastCell.Column
 
这个函数适用于任何情况,即使对于空工作表也是如此,因为默认值是相关工作表的单元格 A1(决不为空)。这样做的原因是需要一些可靠的东西,不管数据的形状如何,不管Excel的各种变化,也不管工作表是否受到保护,都可以使用。
 
注:本程序来源于mrexcel.com,供学习参考。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
自学资料(Excel VBA)[收集整理15]
用VB操作excel方法汇总
Excel VBA(宏)精简(三)
Excel VBA语句集
VBA编程过程中常用的单元格引用方式总结
Excel [分享]使用VBA代码选择单元格/区域
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服