当前位置: 首页 > 网络 > 正文

vbarange VBA中Range的用法小记1

作者:admin 发布时间:2023-07-21 20:13:05 分类:网络 浏览:57


  VBA中Range的用法小记

  1.选择A1单元格,不做任何操作

  2.选择A1单元格,并且赋值“GIVE THANKS TO GOD”

  3.选择A1到C5单元格,不做任何操作

  4.选择A1到C5单元格,并且赋值“GIVE THANKS TO GOD”

  这边选择A1到C5有两种写法,上面的是逗号分隔是一种,下面的这种冒号分隔也是一种。

  5.选择A1到C5单元格和E5到G6两个不连续的区域,不做任何操作

  6.选择第一行,不做任何操作

  7.选择第A列,不做任何操作

  8.选择A5单元格,不做任何操作。但是具体变量需要替换成抽象变量

  9.选择A1到C5单元格,不做任何操作,具体变量需要替换成抽象变量

  10.复制A1单元格的数据到A2

  11.现有一表格如下图,选择下图全部数据,具体变量只能使用A1test.png

  12.现有一表格与上图相似(并且单元格内均有数据,为规整的正方形或者长方形数据),选择下图全部数据,并且不管数据如何增加,运行代码均能选择所有数据

  13.现有表格如下图,请使用offset方法选择A19单元格test.png

  这边的offset有两个参数,第一个参数是上下的挪移,第二个参数是左右的挪移。如下例:

  offset(|A| , |B|) : 以选择单元格为起点,向下挪移A个单元格,向右挪移B个单元格。offset(-|A| , -|B|) : 以选择单元格为起点,向上挪移A个单元格,想左挪移B个单元格。

  依次类推。

  今天range的用法小结暂告一个段落,其中提到的offset与End(xl...)的用法,在实际操作中常常会用到,而且特别方便。

  VBA入门只需3天 Range的用法小记

  使用VBA来整理表格,甚至批量自动导出报表,其实就是模拟了人的行为。在整理表格的时候,我们常常需要选定某个区域,做复制、剪切或者粘贴的操作。

  选定某个区域

  因此,如何使用VBA来模拟这样的行为呢,这就涉及到range的用法了。另外为了更好的选择我们需要的单元格,本篇还会涉及到Cells、offset、resize、CurrentRegion、UsedRange等等的用法小记。这边我们将会根据一个个需求来学习VBA。

  需求1:选择B2单元格

  Sub main() Range("B2").SelectEnd Sub

  B2单元格是第2行,第2列,因此我们也可以使用Cells来改写

  Sub main() Cells(2, 2).SelectEnd Sub

  需求2:选择B2单元格,要求使用变量

  我们写VBA的时候,为了面对比较多变的情况,单元格的位置肯定有的时候是不固定的,需要使用到变量。因此这边我们可以这样改写。

  Sub main() Dim num As Integer Let num=2 Range("B" & num).SelectEnd Sub

  range的接受的参数是一个字符串,因此只要用连接符 & 配置成正确的字符串格式,就不会报错了。

  如果使用Cells,Cells中含变量是更加方便的,一般我们循环的时候都是用Cells来循环的。

  Sub main() Dim num As Integer Let num=2 Cells(num, num).SelectEnd Sub

  需求3:选择A1:B5单元格区域

  Sub main() Range("A1:B5").SelectEnd Sub

  这边也是这样,只要给range一个正确的字符串格式的参数就可以了。

  还可以使用Range和Cells搭配使用。

  Sub main() Range(Cells(1, 1), Cells(5, 2)).SelectEnd Sub

  注意Cells的参数是这样的:Cells(行的数字,列的数字)

  或者Range和Range之间也是可以混合使用的。

  Sub main() Range(Range("A1"), Range("B5")).SelectEnd 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).SelectEnd Sub

  需求5:选择第一列最后一个非空的单元格

  Sub main() Range("A65536").End(xlUp).SelectEnd Sub

  需求6:选择第二行最后一个非空的单元格

  这个必须得使用Cells定位。我们可以这么做

  Sub main() Cells(2, Columns.Count).End(xlToLeft).SelectEnd Sub

  Columns.Count代码最后一列,同理Rows.Count代表最后一行,因此需求5也可以用Cells改写,这里就不赘述了。

  需求7:选择A列最后一个空单元格

  Sub main() Range("A65536").End(xlUp).Offset(1,0).SelectEnd Sub

  这个比较有用,因为我们每次汇总的时候,都要复制粘贴,为了保持表格的连续性。都需要定位到最后一个空单元格。

  需求8:选择第1行最后一个空单元格

  Sub main() Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1).SelectEnd 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)).SelectEnd Sub

  这边为了美观,进行了适当的折行,折行需要添加一个下划线_作为占位符,然后就可以换行了。切记下划线与前面的内容中间需要有空格。

  需求10:使用CurrentRegion、UsedRange

  Sub main() Range("A1").CurrentRegion.SelectEnd Sub

  使用CurrentRegion可以轻松选择所有区域。但是如果是不连续的区域,这边的选择会显得有些错误。如下图

  因此我们可以使用UsedRange选择所有被使用的单元格

  Sub main() ActiveSheet.UsedRange.SelectEnd Sub

  UsedRange需要加上是在哪个Sheet中,无法默认是ActiveSheet。因此我们加上sheet名称。


标签:单元选择使用in需求


相关推荐

最新推荐

关灯