VBA学习 Row和Rows的理解和体会


本人一直在自学VBA,最近因为工作需要,设计了一份模板。其中有一小段的功能是实现某列数据的查重,并把重复数据所在行的整行删除,并保持此行下方所有行向上移动一行。实现这个功能的代码很简单,也很好理解。只是在测试的过程中发现了一个小小的问题,是关于Row和Rows这两个对象的。

我们知道Row和Rows都是指代Excel中“行”这个对象,不同的是Row是指代某行、单个的行,而Rows呢?则是指代行的集合。这就像Worksheet和Worksheets一样,VBA中像这样的对象有很多。

而上面阐述的问题呢,就是和Row和Rows相关的。我先贴出实现上面功能的小段代码:

Sub test()

Dim a, b As Integer

a = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

For b = a To 3 Step -1

If Application.WorksheetFunction.CountIf(Range("A3:A" & b), Range("A" & b)) > 1 Then

Rows(b).Delete shift:=xlUp

End If

Next b

End Sub

我刚开始时,a = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row这里写的是a = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Rows.count。然后测试后发现a=1,我有想了下,才发现是Rows.count的问题。

Range(“A2”).Row或者cells(2,1).Row指的是某个单元格在第几行;而Rows.Count更多的是运用在某个区域中有多少行,比如:Range(“A1:A10”).Rows.Count,这里就是计算该区域行数为10。

这就是Rows和Row在运用中的区别之一了,也是我代码出现问题的核心原因了。所以大家在学习VBA中或者写VBA代码时需要特别关注哟,小小的细节常常决定了事物的发展和走向。

以上,2018年12月9日星期日。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM