VBA常用技巧(一) 下载本文

Mergerng过程将所选各个单元格的内容连接起来保存在合并后的单元格区域中。 第4行代码使用TypeName函数判断当前选定对象是否为Range对象,若是则继续执行代码。

第5行到第7行代码将当前选中区域的内容连接起来保存在字符串变量StrMerge中。 第8行代码将DisplayAlerts属性设置为False,禁止在合并多重数值区域时,Excel显示的警告信息,如图 xiii-4所示,以避免中断代码的运行。

图 xiii-4 合并多重数值区域时警告信息

第9行代码使用Merge方法合并当前选定区域。应用于Range对象的Merge方法通过指定Range对象创建合并单元格,语法如下:

expression.Merge(Across)

参数expression是必需的,返回一个Range对象。

参数Across是可选的,如果该值为True,则将指定区域内的每一行合并为一个合并单元格。默认值为False。

第9行也可以使用下面的代码:

Selection.MergeCells = True

第10行代码将变量StrMerge的值赋给合并后的单元格。 运行Mergerng过程结果如图 xiii-5所示。

图 xiii-5 合并单元格结果

3. 合并内容相同的连续单元格

如果需要合并如图 xiii-6所示的工作表中B列中部门相同的连续单元格,可以使用下面的代码。

图 xiii-6 需合并的工作表

#001 Sub Mergerng()

#002 Dim IntRow As Integer #003 Dim i As Integer

#004 Application.DisplayAlerts = False #005 With Sheet1

#006 IntRow = .Range(\#007 For i = IntRow To 2 Step -1

#008 If .Cells(i, 2).Value = .Cells(i - 1, 2).Value Then #009 .Range(.Cells(i - 1, 2), .Cells(i, 2)).Merge #010 End If #011 Next #012 End With

#013 Application.DisplayAlerts = True #014 End Sub

代码解析:

第7行到第11行代码,从最后一行开始,向上逐个单元格判断连续两个单元格的内容是否相同,如果相同则合并。

运行Mergerng过程后,结果如图 xiii-7所示。

图 xiii-7 合并内容相同的连续单元格

4. 取消合并单元格时在每个单元格中保留内容

如果需要取消如图 xiii-7所示的工作表中B列“部门”的合并单元格,并且各个单元格均保留原合并单元格的内容,可以使用下面的代码。

#001 Sub UnMerge()

#002 Dim StrMer As String #003 Dim IntCot As Integer #004 Dim i As Integer #005 With Sheet1

#006 For i = 2 To .Range(\#007 StrMer = .Cells(i, 2).Value

#008 IntCot = .Cells(i, 2).MergeArea.Count #009 .Cells(i, 2).UnMerge

#010 .Range(.Cells(i, 2), .Cells(i + IntCot - 1, 2)).Value = StrMer #011 i = i + IntCot - 1 #012 Next #013 End With #014 End Sub

代码解析:

UnMerge过程取消工作表中B列中的合并单元格,并且各个单元格均保留原合并单元

格的内容。

第7行代码取得B列每个合并单元格的内容。 第8行代码取得合并区域的单元格数量。

第9行代码使用UnMerge方法取消合并单元格。UnMerge方法将合并区域分解为独立的单元格,语法如下:

expression.UnMerge

第10行代码将原合并单元格的内容赋值给取消合并单元格后的区域。 第11行代码调整循环变量i的值,使下一次循环从下一个单元格区域开始。 运行UnMerge过程结果如图 xiii-6所示。

高亮显示单元格区域

如果希望以某种方式突出显示活动单元格或者指定的单元格区域,从而一目了然地获得某些信息,那么可以高亮显示活动单元格区域,如下面的代码所示。

#001 Private Sub Worksheet_SelectionChange(ByVal Target As Range) #002 Cells.Interior.ColorIndex = xlColorIndexNone #003 Target.Interior.ColorIndex = 8 #004 End Sub

代码解析:

设置工作表当前选定区域单元格的内部填充颜色,以高亮显示选定区域,如图 0-1所示。

图 0-1

高亮显示选定区域

第2行代码将工作表中所有的单元格的内部填充颜色设置为xlColorIndexNone,即取消单元格的内部填充颜色。

第3行代码将工作表中选定单元格的内部填充颜色设置为8。