分享

#Excel VBA#解读(44):将单元格联合起来——Union方法

 L罗乐 2017-03-24

 

当我们需要对工作表中不同的区域进行某一操作时,可以使用Application对象的Union方法先将这些区域合成一个区域,然后对这个合成的区域统一操作。

 

如下图所示,工作表中有三个单元格区域:A1:B2C4:D5E8:F9

                           

我们要将单元格区域A1:B2E8:F9的字体设置为红色。根据前面所学的知识,我们可以使用下面的代码实现:

    Range('A1:B2').Font.ColorIndex =3

    Range('E8:F9').Font.ColorIndex =3

 

现在,我们使用Union方法来实现:

    Union(Range('A1:B2'),Range('E8:F9')).Font.ColorIndex = 3

为方便理解,将上面的代码分开表示(参考代码中的注释来理解):

Sub testUnion3()

    Dimrng As Range '设置单元格对象变量

   

    '将单元格区域A1:B2E8:F9合成一个单元格区域

    Set rng = Union(Range('A1:B2'),Range('E8:F9'))

   

    '将合成的区域中的字体颜色设置为红色

    rng.Font.ColorIndex = 3

End Sub

 

Union方法的语法为:

         Application.Union(参数1,参数2,……,参数30)

其中:

  • Application表示工作簿应用程序对象(顶层对象),可以省略。

  • 参数1,参数2,……,参数30表示单元格对象(Range对象),最少指定2个代表单元格对象的参数,最多30个。

 

查找并返回多个单元格

在《Excel VBA解读(41):藏得再好也能找到——使用Find方法实现查找》中,我们初步介绍了使用Find方法查找含有特定内容的单元格,并介绍了使用FindNext方法和FindPrevious方法实现连续查找。通过学习,我们知道要使用Find方法找到含有特定内容的所有单元格,只能与FindNext方法或FindPrevious方法配合。

如果结合使用Union方法,可以动态地再增加单元格,从而找到所有的单元格。

 

在《Excel VBA解读(41):藏得再好也能找到——使用Find方法实现查找》中,我们使用了下图所示的工作表:


本例中,我们仍然使用该工作表。查找工作表中单元格内容为1的所有单元格。代码如下:

Sub testUnion4()

    Dim rng As Range '声明对象变量

    Dim firstRng As String '声明字符串变量用来存放变量地址

    Dim rngAllFound As Range '用于存放所有找到的单元格

   

    '将查找到的第一个单元格赋值给变量

    Set rng =Range('A1:D3').Find(What:='1', LookIn:=xlValues)

   

    '判断是否找到了单元格

    If Not rng Is Nothing Then

        '若找到,则将其地址保存到变量中

        firstRng = rng.Address

        '将找到的单元格添加到存放单元格区域的变量中

        Set rngAllFound = rng

        Do

            '查找下一个单元格

            Set rng =Range('A1:D3').FindNext(After:=rng)

            '如果找到的单元格不是最先找到的单元格,则将其存放在单元格区域变量中

            If rng.Address <> firstRngThen

                Set rngAllFound =Union(rngAllFound, rng)

            End If

        Loop Until rng.Address = firstRng

    End If

   

    '显示找到的单元格地址

    firstRng = ' '

    For Each rng In rngAllFound

        firstRng = firstRng & rng.Address& '  '

    Next rng

    MsgBox '内容为1的单元格在:'& firstRng

End Sub

运行代码后的结果如下图所示:

 

代码中使用Union方法找到满足条件的所有单元格,然后可以方便地进一步处理这些单元格。

 

--------------------------------------

 

如果您对本文介绍的内容有什么建议或好的示例,欢迎发送邮件给我:xhdsxfjy@163.com

 

通过下列方式可以更快地了解完美Excel更新:

 

关注《完美Excel》微信公众账号:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多