网站大量收购独家精品文档,联系QQ:2885784924

VBA探讨在工作表中找到最后一行.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VBA探讨在工作表中找到最后一行

[VBA]探讨在工作表中找到最后一行?? 2007-11-07 17:58:43|??分类: excel教程 |??标签: |字号大中小?订阅 找到最后一行的一些方法探讨 使用End属性 在ExcelVBA中,使用End(xlUp)查找最后一行是最常使用且最为简单的方法,它假设要有一列总包含有数据(数字、文本和公式等),并且在该列中最后输入数据的单元格的下一行不会包含数据,因此不必担心会覆盖掉已有数据。但该方法有两个缺点: (1) 仅局限于查找指定列的最后一行。 (2) 如果该列中最后一行被隐藏,那么该隐藏行将被视作最后一行。因此,在最后一行被隐藏时,其数据可能会被覆盖。但该列中间的隐藏行不会影响查找的结果。 [示例代码01] Sub EndxlUp_OneColLastRow() ? If Range(A Rows.Count).End(xlUp) = Empty Then GoTo Finish ? 获取最后一行 ? MsgBox 最后一行是第 Range(A Rows.Count).End(xlUp).Row “行.” ? Exit Sub Finish: ? MsgBox 没有发现公式或数据! End Sub [示例代码02] Sub NextRowInColumnUsedAsSub() 包含所有数据和公式,忽略隐藏的最后一行 ? Range(A Range(A Rows.Count).End(xlUp).Row + 1).Select End Sub [示例代码03] Sub NextRowInColumnUsedAsFunction() 包含所有数据和公式,忽略隐藏的最后一行 ? Range(A LastRowInColumn(A) + 1).Select End Sub - - - - - - - - - - - - - - - - - - - - - - - - - Public Function LastRowInColumn(Column As String) As Long ???? LastRowInColumn = Range(Column Rows.Count).End(xlUp).Row End Function 注意,要输入新数据的列可能与我们所查找最后一行时所使用的列不同,例如,在上例中,我们可以修改为在B列中查找该列的最后一行,而在A列相应行的下一行中输入新的数据。 ? 使用Find方法 vba常量: LookIn:=xlValues,按值查找 LookAt:=xlWhole,全部匹配,xlPart部分匹配 SearchOrder:=xlByRows,按行查找 SearchDirection:=xlNext,查找方向,向下查找 Find方法在当前工作有数据中进行查找,不需要指定列,也可以确保不会意外地覆盖掉已有数据。其中,参数LookIn指定所查找的类型,有三个常量可供选择,即xlValues、xlFormulas和xlComments。 (1) 常量xlFormulas将包含零值的单元格作为有数据的单元格。(当设置零值不显示时,该单元格看起来为空,但该参数仍将该单元格视为有数据的单元格) (2) 常量xlValues将包含零值的单元格(如果设置零值不显示时)作为空白单元格,此时,若该单元格在最后一行,则Find方法会认为该单元格所在的行为空行,因此,该单元格中的内容可能会被新数据所覆盖。 [注:在Excel中,选择菜单“工具”——“选项”,在打开的“选项”对话框中,选择“视图”选项卡,将其中的“零值”前的复选框取消选中,则工作表中的零值都不会显示] 如果在参数LookIn中使用常量xlValues的话,还存在一个问题是:如果您将最后一行隐藏,则Find方法会认为倒数第二行是最后一行,此时您在最后一行的下一行输入数据,则会将实际的最后一行的数据覆盖。 您可以在隐藏最后一行与不隐藏最后一行,或者是最后一行显示零值与不显示零值时,运行下面的示例代码04,看看所得的结果有什么不同。 [示例代码04] Sub Find_LastRowxlValues() ?? On Error GoTo Finish ?? 获取最后一行 ?? MsgBox 最后一行是第 Cells.Find(*, _ ?? SearchOrder:=xlByRows, LookIn:=xlValues, _ ?? SearchDirection:=xlPrevious).EntireRow.Row “行” ?? Exit Sub Finish: ?? MsgBox 没有发现数值! End Sub 因此,在使用Find方法时,您应该考虑所选参数设置的常量,以及工作表最后一行是否有可能被隐藏或不显示零值。

文档评论(0)

almm118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档