将合并的单元格向下移动

时间:2014-02-11 12:42:42

标签: excel vba excel-vba merge

我正在编写一个VBA脚本,它会将合并的单元格向下移动。当它执行此操作时,会出现一个弹出框,警告用户此操作将取消合并单元格。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Not Intersect(Target, Range("A28")) Is Nothing Then
    Range("c28").Insert Shift:=xlDown
End If

我想要发生两件事之一。

一个。始终自动接受是,因此弹出窗口不会显示给用户。 (插入后我会在VBA中重新合并)

B中。有没有办法在没有合并的情况下向下移动。

2 个答案:

答案 0 :(得分:1)

根据您的评论,这应该有效并避免警告:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("A28")) Is Nothing Then
        Range("c28:d28").Insert Shift:=xlDown
    End If
End Sub

如果您仍然收到警告,请尝试以下操作:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("A28")) Is Nothing Then
        Application.DisplayAlerts = False
        Range("c28:d28").Insert Shift:=xlDown
        Application.DisplayAlerts = True
    End If
End Sub

答案 1 :(得分:0)

如果您确实无法确切知道哪些单元格已合并,则可以使用以下内容:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Me.Range("A28")) Is Nothing Then
        Application.DisplayAlerts = False
        Me.Range("c28").MergeArea.Insert Shift:=xlDown
        Application.DisplayAlerts = True
    End If
End Sub

但请注意,第28行下方的合并区域也可以通过此操作取消合并。例如,如果将单元格B30:F30合并,则上面的代码将导致它们取消合并。