Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 方法';合并区域';对象的';范围';失败_Vba_Excel - Fatal编程技术网

Vba 方法';合并区域';对象的';范围';失败

Vba 方法';合并区域';对象的';范围';失败,vba,excel,Vba,Excel,在这篇文章的开头,我会说,我在我的工作手册的其他地方没有问题地实现了类似的逻辑,在我的研究中,我没有遇到任何人引用同样的困难 在我的工作表中,我使用了一个2单元合并的“加号按钮”,当用户单击它时,它将在加号按钮所在的位置上方插入一行。(同样,我在工作表中使用了许多类似的按钮)。按钮将在工作表中上下移动,但它始终保留在A列中。A列中也可能有许多加号按钮(因此我选择不使用.Find) 起初,我试图根据单击的单元格是否具有“+”值来建立逻辑。这不起作用,我想这是因为“Target”包含两个单元格,只有

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

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

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

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

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
如果不相交(目标、范围(“A17:A1000”))则为空
如果Target.Cells.Count=2,则
有目标

如果.MergeCells然后“虽然.MergeArea.UnMerge是MSDN页面上对该场景所说的逐字逐句的操作,但我在没有.MergeArea的情况下尝试了它,它成功了。所以我的代码现在是

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

   End With
带目标的


If.MergeCells然后“如果您的问题是使用合并单元格插入行,则
Target.EntireRow.Insert xlDown
是否有效?@L42问题不是插入行,而是插入两行,而我只需要一行。我能想到的唯一解决方法是首先取消合并单元格。