转一篇我自己写的头条文章,可以点击我的头像查看更多的vba文章
使用VBA来整理表格,甚至批量自动导出报表,其实就是模拟了人的行为。在整理表格的时候,我们常常需要选定某个区域,做复制、剪切或者粘贴的操作。
因此,如何使用VBA来模拟这样的行为呢,这就涉及到range的用法了。另外为了更好的选择我们需要的单元格,本篇还会涉及到Cells、offset、resize、CurrentRegion、UsedRange等等的用法小记。这边我们将会根据一个个需求来学习VBA。
需求1:选择B2单元格
Sub main()
Range(“B2”).Select
End Sub
B2单元格是第2行,第2列,因此我们也可以使用Cells来改写
Sub main()
Cells(2, 2).Select
End Sub
需求2:选择B2单元格,要求使用变量
我们写VBA的时候,为了面对比较多变的情况,单元格的位置肯定有的时候是不固定的,需要使用到变量。因此这边我们可以这样改写。
Sub main()
Dim num As Integer
Let num = 2
Range(“B” & num).Select
End Sub
range的接受的参数是一个字符串,因此只要用连接符 & 配置成正确的字符串格式,就不会报错了。
如果使用Cells,Cells中含变量是更加方便的,一般我们循环的时候都是用Cells来循环的。
Sub main()
Dim num As Integer
Let num = 2 Cells(num, num).Select
End Sub
需求3:选择A1:B5单元格区域
Sub main()
Range(“A1:B5”).Select
End Sub
这边也是这样,只要给range一个正确的字符串格式的参数就可以了。
还可以使用Range和Cells搭配使用。
Sub main()
Range(Cells(1, 1), Cells(5, 2)).Select
End Sub
注意Cells的参数是这样的:Cells(行的数字,列的数字)
或者Range和Range之间也是可以混合使用的。
Sub main()
Range(Range(“A1”), Range(“B5”)).Select
End Sub
需求4:选择选择A1:B5单元格区域,要求使用变量
Sub main()
Dim n1 As Integer
Dim n2 As Integer
Let n1 = 1
Let n2 = 5
Range(“A” & n1 & “:B” & n2).Select
End Sub
需求5:选择第一列最后一个非空的单元格
Sub main()
Range(“A65536”).End(xlUp).Select
End Sub
需求6:选择第二行最后一个非空的单元格
这个必须得使用Cells定位。我们可以这么做
Sub main()
Cells(2, Columns.Count).End(xlToLeft).Select
End Sub
Columns.Count代码最后一列,同理Rows.Count代表最后一行,因此需求5也可以用Cells改写,这里就不赘述了。
需求7:选择A列最后一个空单元格
Sub main()
Range(“A65536”).End(xlUp).Offset(1,0).Select
End Sub
这个比较有用,因为我们每次汇总的时候,都要复制粘贴,为了保持表格的连续性。都需要定位到最后一个空单元格。
需求8:选择第1行最后一个空单元格
Sub main()
Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1).Select
End Sub
这边就涉及到offset的用法了,offset的用法如下例:
offset(|A| , |B|) : 以选择单元格为起点,向下挪移A个单元格,向右挪移B个单元格。
offset(-|A| , -|B|) : 以选择单元格为起点,向上挪移A个单元格,想左挪移B个单元格。
需求:9:不使用CurrentRegion、UsedRange,选择整个区域
这个需求我们以后常常会用,复制所有区域的数据到另一个sheet或者其他工作簿中。如果不使用CurrentRegion或UsedRange,我的思路是,先定位一个起始单元格比如A1,如果不需要表头可以定位A2,然后找到A2单元格所处的行的最后一个非空单元格,然后在顺势往下找到该列所处的最后一个非空单元格,选中。就是我们要的整个区域了。
Sub main()
Range(Range(“A1”), Cells(1, Columns.Count). _ End(xlToLeft). _ End(xlDown)).Select
End Sub
这边为了美观,进行了适当的折行,折行需要添加一个下划线_作为占位符,然后就可以换行了。切记下划线与前面的内容中间需要有空格。
需求10:使用CurrentRegion、UsedRange
Sub main()
Range(“A1”).CurrentRegion.Select
End Sub
使用CurrentRegion可以轻松选择所有区域。但是如果是不连续的区域,这边的选择会显得有些错误。如下图
因此我们可以使用UsedRange选择所有被使用的单元格
Sub main()
ActiveSheet.UsedRange.Select
End Sub
UsedRange需要加上是在哪个Sheet中,无法默认是ActiveSheet。因此我们加上sheet名称。
原创文章,作者:普尔小编,如若转载,请注明出处:http://www.puerpx.cn/pxwd/10202.html