Finding merged cells using VBA
Here is another way to find merged cells thanks to Allen Wyatt
You can use a macro to find the various merged cells in the worksheet. Here are some options for you try.
Sub FindMerged1()
Dim c As Range
For Each c In ActiveSheet.UsedRange
If c.MergeCells Then
MsgBox c.Address & ” is merged”
End If
Next
End Sub
This particular macro steps through all the cells in the UsedRange and if the cell is part of a merged cell, a message box is displayed. Note that the pertinent property being checked is the MergeCells property. This is set to True if the cell is merged with another cell.
Of course, a macro such as this can take quite a long time to run if the worksheet has lots of cells and even longer if a good number of those cells are merged. Your macro would run faster if it didn’t stop at each merged cell and display a dialog box. The following version takes a different approach, filling each merged cell with a yellow color:
Sub FindMerged2()
Dim c As Range
For Each c In ActiveSheet.UsedRange
If c.MergeCells Then
cell.Interior.ColorIndex = 36
End If
Next
End Sub
A variation on this approach could be to create a user-defined function that simply returns True or False if the cell is merged:
Function FindMerged3(rCell As Range)
FindMerged3 = rCell.MergeCells
End Function
With this simple function you could then use conditional formatting to somehow highlight cells if they are merged. (If the function returns True, then conditional formatting applies whatever formatting you specify to the cell.)
Finally, if you want a list of cells that are merged in the worksheet, you can simply have your macro put together the list instead of coloring the cells:
Sub FindMerged4()
Dim c As Range
Dim sMsg As String
sMsg = “”
For Each c In ActiveSheet.UsedRange
If c.MergeCells Then
If sMsg = “” Then
sMsg = “Merged worksheet cells:” & vbCr
End If
sMsg = sMsg & c.Address & vbCr
End If
Next
If sMsg = “” Then
sMsg = “No merged worksheet cells.”
End If
MsgBox sMsg
End Sub
This variation displays a single message box at the end of the macro, indicating the addresses of any merged cells located in the worksheet.





