打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Excel VBA解读(59):合并单元格
userphoto

2017.05.27

关注

 

Excel中,我们经常会用到合并单元格操作,使表格更加美观易读。如下图所示的工作表,标题位于单元格A1,如果需要将标题跨列居中,那么先选择单元格区域A1:G1,然后单击“合并后居中”按钮。

使用录制宏录制上述操作的代码如下:

Sub Macro1()

'

' Macro1Macro

' 由完美Excel录制

 

'

    Range('A1:G1').Select

    With Selection

        .HorizontalAlignment = xlCenter

        .VerticalAlignment = xlCenter

        .WrapText = False

        .Orientation = 0

        .AddIndent = False

        .IndentLevel = 0

        .ShrinkToFit = False

        .ReadingOrder = xlContext

        .MergeCells = False

    End With

    Selection.Merge

End Sub

现在我们知道,宏录制器录制了很多无用的代码。因此,我们可以将其录制的代码简化如下,达到同样的效果:

Sub testMerge1()

    '合并单元格

    Range('A1:G1').Merge

    '将单元格中的内容居中

    With Selection

        .HorizontalAlignment = xlCenter

        .VerticalAlignment = xlCenter

    End With

End Sub

 

Merge方法的语法

Range对象.Merge(Across)

说明

  • 将指定的Range对象创建合并单元格。

  • 合并后的单元格值指定为单元格区域左上角的单元格的值。

  • 参数Across可选。设置为True,则指定单元格区域的每行的单元格分别合并作为合并单元格。默认值为False。例如,下面的代码,将参数Across设置为True

Range('A1:C4').MergeAcross:=True

分别合并单元格区域A1:C4中的各行,如下图所示

  • 合并单元格中不能输入数组公式,否则会导致出错:运行时错误’1004’:不能设置类RangeFormulaArray属性。

 

相关的方法和属性

UnMerge方法

将合并的单元格区域分成单个单元格,即取消单元格合并。

MergeArea属性

只读。返回一个Range对象,代表包含指定单元格的合并单元格区域。如果指定单元格不在合并单元格区域中,该属性返回指定单元格。

注意,MergeArea属性仅适用于单元格区域中单个单元格。

MergeCells属性

如果单元格或单元格区域包含在合并单元格中,则返回True

注意,当选择包含合并单元格的区域时,结果选区可能与试图选择的区域不同。使用Address属性来核查所选单元格区域的地址。

 

示例1:判断单元格是否为合并单元格并取消单元格合并

下面的代码先判断单元格是否在合并单元格中,如果是则取消单元格合并。

Sub testMerge3()

    With Range('A1')

        '是否A1包含在合并单元格中

        If .MergeCells Then

            '如果是,返回合并单元格区域

            '并取消单元格合并

            .MergeArea.UnMerge

        Else

            MsgBox '没有合并单元格!'

        End If

    End With

End Sub

 

示例2:判断单元格是否包含在合并单元格区域

除了示例1中使用MergeCells属性外,还可以使用下面的介绍方法判断是否为合并单元格。

如下图所示的工作表区域,可以看出A1是单独的单元格,而A2则包含在合并单元格中。

代码及执行的效果如下图所示:


 

示例3:合并内容相同的单元格

如下图所示,需要将列A中内容相同的单元格合并。

代码如下:

说明

  • 代码中,使用了AdvancedFilter方法获取列A中不重复的值。关于AdvancedFilter方法的使用请参见《ExcelVBA解读(53):高级筛选——AdvancedFilter方法》。

  • 代码中,先使用了Application对象DisplayAlerts属性关闭Excel的弹出警告框功能。若不关闭,那么在合并都含有数据的单元格时,会弹出下图所示警告框,导致代码运行中断。

 

提示通常,合并单元格会给以后数据的使用带来不便的影响,因此,建议在数据工作表中尽量不使用合并单元格,在最后呈现结果的报表工作表中可以合并单元格,以简化或美化工作表。


 

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

也可以在本文下方留言,提出您的看法或建议。

本文属原创文章,转载请联系我或者注明出处。

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
重磅 | Excel VBA解读:Range对象篇
ExcelVBA编程实例(150例)
Excel VBA解读(64):初步使用名称
Range对象应用大全(3)—CurrentRegion属性详解
Excel Application对象应用大全
解析UsedRange属性
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服