在Excel VBA开发过程中经常会遇到遍历Sheet中的数据,常常我们会使用
For i=1 To maxRow
For j=1 To maxColumn
Next j
Next i
其中的maxRow和maxColumn是Sheet中数据所在行数的最大值和列数最大值(也就是结尾位置),使用UsedRange.Rows.Count和UsedRange.Columns.Count只能获取到数据总共行数和列数,往往数据区存在空白的行和列,这样就UsedRange.Rows.Count和UsedRange.Columns.Count就有可能小于maxRow和maxColumn,缩小了数据遍历的范围,那我们怎样获取maxRow和maxColumn的值呢?
我们可以使用Find()函数。
maxRow = Cells.Find("*", Range("A1"), xlFormulas, , xlByRows, xlPrevious).Row
maxColumn = Cells.Find("*", Range("A1"), xlFormulas, , xlByColumns, xlPrevious).Column
这样就能遍历完整的数据区了。
Find函数
在区域中查找特定信息,并返回 Range对象,该对象代表用于查找信息的第一个单元格。如果未发现匹配单元格,就返回 Nothing。本方法不影响选定区域或活动单元格。
expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SerchFormat)
expression 必需。该表达式返回一个 Range对象。
What Variant 类型,必需。要搜索的数据。可为字符串或任意 Microsoft Excel 数据类型。
After Variant 类型,可选。表示搜索过程将从其之后开始进行的单元格。此单元格对应于从用户界面搜索时的活动单元格位置。值得注意的是,After 必须是区域中的单个单元格。请记住搜索是从该单元格之后开始的;直到本方法绕回到指定的单元格时,才对其进行搜索。如果未指定本参数,搜索将从区域的左上角单元格之后开始。
LookIn Variant 类型,可选。信息类型。
LookAt Variant 类型,可选。可为以下 XlLookAt 常量之一:xlWhole 或 xlPart。
SearchOrder Variant 类型,可选。可为以下 XlSearchOrder 常量之一:xlByRows 或 xlByColumns。
SearchDirection XlSearchDirection 类型,可选。搜索的方向。
XlSearchDirection 可为以下 XlSearchDirection 常量之一。 |
xlNext 默认值 |
xlPrevious |
MatchCase Variant 类型,可选。若为 True,则进行区分大小写的查找。默认值为 False。
MatchByte Variant 类型,可选。仅在选择或安装了双字节语言支持时使用。若为 True,则双字节字符仅匹配双字节字符。若为 False,则双字节字符可匹配其等价的单字节字符。
SearchFormat Variant 类型,可选。搜索的格式