【问题标题】:Method 'MergeArea' of object 'Range' failed对象“范围”的方法“合并区域”失败
【发布时间】:2017-09-29 22:08:33
【问题描述】:

我会在这篇文章的开头说我在我的工作簿的其他地方实现了类似的逻辑,没有问题,在我的研究中,我没有遇到任何人引用同样的困难。

在我的工作表中,我使用了一个 2 单元格合并的“加号按钮”,当用户单击它时,它将在加号按钮所在的位置上方插入一行。 (我再次在我的工作表中使用了许多这样的按钮)。该按钮将在工作表上上下移动,但它始终保留在 A 列中。A 列中也有可能有许多加号按钮(因此我选择不使用 .Find)。

最初,我尝试将我的逻辑基于单击的单元格是否具有“+”值。这不起作用,我认为这是因为“目标”包含两个单元格,而只有一个单元格有“+”。因此,因为该列中唯一合并的单元格将是加号图标,所以我让它评估单元格计数。这可行,但是当它插入行时,它会插入两行,因为 Target 是两个单元格。所以我的解决方法是取消合并目标,插入行,然后重新合并。 (我在工作簿的其他地方也做了类似的事情)。

但是,我在下面指示的行上收到错误消息 1004:“对象 'Range' 的方法 'MergeArea' 失败”。 Target 是一个对象,单元格被合并,所以我不知道为什么这个方法会失败。

If Not Intersect(Target, Range("A17:A1000")) Is Nothing Then
    If Target.Cells.Count = 2 Then
       With Target
            If .MergeCells Then '<- highlighted code on error
                .MergeArea.UnMerge
                'code to insert, re-merge, etc
            End If

       End With
    End If
End If

【问题讨论】:

  • 如果您在使用合并单元格插入行时遇到问题,Target.EntireRow.Insert xlDown 可以工作吗?
  • @L42 问题不是插入一行,问题是它插入了两行,我只需要一个。我能想到的唯一解决方法是先取消合并合并的单元格。

标签: vba excel


【解决方案1】:

虽然 .MergeArea.UnMerge 是 MSDN 页面所说的针对这种情况所做的逐字记录,但我在没有 .MergeArea 的情况下尝试过它并且它有效。所以我的代码现在是

   With Target
        If .MergeCells Then '<- highlighted code on error
            .UnMerge
            'code to insert, re-merge, etc
        End If

   End With

这似乎工作正常,所以问题解决了!

【讨论】:

    猜你喜欢
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多