VBA实用小程序74:将合并单元格转换为跨列居中
excelperfect
“合并后居中”按钮是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,供有兴趣的朋友学习参考。