VBA实用小程序74:将合并单元格转换为跨列居中

2021-05-07 10:36:12 浏览数 (1)

“合并后居中”按钮是Excel界面中一个非常方便的功能,很多人都喜欢使用合并单元格。然而,对合并单元格进行一些操作会带来一些问题,Excel会给出下图1所示的提示消息。

图1

这往往会让人感到困惑。

其实,Excel有一个隐藏着的替代选项,称为“跨列居中”,与合并单元格效果相同,如下图2所示。

图2

虽然两者看起来效果不同,但实质上是不同的,“跨列居中”不会导致上图1所示的错误信息提示。

单击“开始”功能区“对齐方式”(或者“字体”、“数字”)组右下角的对话框启动器,或者按“Ctrl 1”组合键。在弹出的“设置单元格格式”对话框中选择“对齐”选项卡,在“水平对齐”下拉列表中选择“跨列居中”,如下图3所示。

图3

如果已经有一个包含大量合并单元格的工作簿,如果要一个单元格一个单元格地改变其格式设置,没有必要,因为可以使用下面的VBA程序。

Sub ConvertMergedCellsToCenterAcross()

Dim c As Range

Dim mergedRange As Range

'检查当前是否为工作表

If TypeName(ActiveSheet) <>"Worksheet" Then Exit Sub

'遍历已使用的所有单元格

For Each c In ActiveSheet.UsedRange

'如果合并且单行

If c.MergeCells = True Andc.MergeArea.Rows.Count = 1 Then

'为合并单元格设置变量

Set mergedRange = c.MergeArea

'取消合并单元格并应用跨列居中

mergedRange.UnMerge

mergedRange.HorizontalAlignment =xlCenterAcrossSelection

End If

Next

End Sub

跨列居中不适用于跨行,因此,上面的VBA程序专门设计为不删除任何包含多行的合并单元格。

注:本文整理自exceloffthegrid.com,供有兴趣的朋友学习参考。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

vba

0 人点赞