您好,最近有人在我之前的一个问题的评论帖子中发布了这篇文章。这篇文章本身显示了一段代码,用于删除合并的单元格,并将它们替换为跨选定内容的中心
https://codereview.stackexchange.com/questions/197726/getting-rid-of-merged-cells/197730#197730
我的问题是我似乎不能让代码工作。我试着试着编写代码,但遇到了两个问题。主要是:
Sub fixMergedCells(sh As Worksheet)
以及以后的
Set used = sh.UsedRange
我不太明白这一点,他们似乎阻止我把它作为一个宏按钮。另外,我似乎得到一个调试提示"Method 'UnMerge‘of object 'Range’failed“关于这一行:
.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
发布于 2018-07-03 23:49:34
你的子过程没有列在可用的‘宏’中,因为它有一个非可选的、不可变的参数。
尝试使用可选的变量类型参数,如果省略该参数,则使用ActiveSheet填充(我假设按钮已打开)。
Sub fixMergedCells(Optional sh As Variant)
If IsMissing(sh) Then Set sh = ActiveSheet
sh.Cells.UnMerge
End Sub
IsMissing只能与可选的变量类型参数一起使用。如果可选参数是variant类型,则带有可选参数的子过程仅作为可用‘宏’列出,以分配给按钮。
https://stackoverflow.com/questions/51157976
复制相似问题