Dzwebs.Net

撰写电脑技术杂文十余年

通过VBA中的Union合并多个Range选择区域

Admin | 2010-5-13 10:45:35 | 被阅次数 | 42719

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  在Excel中,Union的功能是合并两个或两个以上的选择区域,合并成为一个更大的区域。

  所合并的多个选择区域,这些选择区域,可以是不连续的,也可以是连续的。

  一般情况下,要使用Union,可通过如下来使用。

  expression.Union(Arg1, Arg2, ...)

  expression参数为可选。该表达式返回一个Application对象;

  Arg1, Arg2, ...   Range 类型,必需。必须至少指定两个Range对象。

  在使用Union的时候,我们也没有必要使用expression.Union,直接调用Application.Union方法即可。

  一、最不灵活的实例  

  Dim MyArea1, MyArea2 As Range
  Set MyArea1 = Range("A1:B3")
  Set MyArea2 = Range("A7:B10")
  Application.Union(MyArea1, MyArea2).Select

  如上代码,功能是,首先定义两个选择区域,然后,分别设置选择区域为:A1:B3和A7:B10;最后,通过Application.Union把两个选择区域进行合并,并将合并后的区域选中。

  当然,Application.Union合并区域,功能是强大的,但是,至少要有两个选择区域;如果有多个,也是可行的,如下代码,通过Application.Union合并三个选择区域,并将其选中。

  Dim MyArea1, MyArea2, MyArea3 As Range
  Set MyArea1 = Range("A1:B3")
  Set MyArea2 = Range("A7:B10")
  Set MyArea3 = Range("A12:B14")
  Application.Union(MyArea1, MyArea2, MyArea3).Select

  以上代码大家都看了,有没有发现问题呢?

  当我们在设定选择区域的时候,必须在Range("")指明从哪个单元格到哪个单元格,比如Range("A12:B14")
,那是多么的麻烦。

  下面,给大家介绍一下更为灵活方便的方法。

  二、较为灵活方便的方法

  要选择多个区域并合并,使用单元格名称来确定区域,是多么的不方便。

  我们完全可以使用行列的序号来代替单元格名称。

  如下代码:

  Dim MyArea1, MyArea2, MyArea3 As Range
  Set MyArea1 = Range(Cells(1, 1), Cells(3, 3))
  Set MyArea2 = Range(Cells(6, 1), Cells(9, 3))
  Set MyArea3 = Range(Cells(12, 1), Cells(13, 3))
  Application.Union(MyArea1, MyArea2, MyArea3).Select

  就是这样,通过Range(Cells(1, 1), Cells(3, 3))来代替Range(“A1:C3”)。

  知道为什么要这么使用吗,愿意就是,当您试图通过VBA来确定单元格名称,如A1:C3时,难以构造这样的字符连接。倒不如直接使用行列所在的序号进行替代,因为Cells(行号、列号),里面的行列号,我们可以通过直接指定或者通过循环赋予一个值。

  三、更灵活的实例

  基于以上两个实例,下面,我们可以构造一个更为灵活的实例。先看如下代码吧:

  Application.Union(Range(Cells(1, 1), Cells(11, 3)), Range(Cells(16, 1), Cells(16, 3)), Range(Cells(21, 1), Cells(32, 3))).Select

  上述代码中,已经不再单独定义Range对象了,而是在Union方法中,直接调用Range(Cells(1, 1), Cells(11, 3))来合并被选择的单元格区域。


该杂文来自: Excel杂文

上一篇:19条优化VBA,让VBA运行速度更快的建议之下篇

下一篇:vba返回Excel多个不连续选择区域的总行数

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计