Здравствуйте. Недавно кто-то опубликовал это в ветке комментариев на одном из моих предыдущих вопросов. Сам пост показывает код для удаления объединенных ячеек и замены их на Central Across Selection
https://codereview.stackexchange.com/questions/197726/getting-rid-of-merged-cells/197730#197730
Моя проблема в том, что я не могу заставить код работать. Я попытался дать код, но у меня две проблемы с ним. Прежде всего:
Sub fixMergedCells(sh As Worksheet)
и позже
Set used = sh.UsedRange
Что я не совсем понимаю, и они, кажется, мешают мне применять его как кнопку макроса. В противном случае мне кажется, что я получаю подсказку отладки, в которой говорится: «Метод« UnMerge »объекта« Range »не выполнен» в отношении строки:
.UnMerge
Не могли бы вы помочь мне понять, что же я не могу понять?
Вот мой оригинальный код из моего другого поста:
Sub fixMergedCells(sh As Worksheet)
'replace merged cells by Center Acroos Selection
'high perf version using a hack: https://stackoverflow.com/a/9452164/78522
Dim c As Range, used As Range
Dim m As Range, i As Long
Dim constFla: constFla = Array(xlConstants, xlFormulas)
Set used = sh.UsedRange
For i = 0 To 1 '1 run for constants, 1 for formulas
Err.Clear
On Error Resume Next
Set m = Intersect(used.Cells.SpecialCells(constFla(i)), used.Cells.SpecialCells(xlBlanks))
On Error GoTo 0
If Not m Is Nothing Then
For Each c In m.Cells
If c.MergeCells Then
With c.MergeArea
'Debug.Print .Address
.UnMerge
.HorizontalAlignment = xlCenterAcrossSelection
End With
End If
Next c
End If
Next i
End Sub
Sub test_fixMergedCells()
fixMergedCells ActiveSheet
End Sub