删除excel单元格时保存值

时间:2015-05-01 17:16:03

标签: excel vba excel-vba

所以,我回来时有一个更具体的答案/问题。 另外,对不起,我在几周前就拿到了excel(实际上并没有使用过这个程序)并且用量很少。因此,如果代码不好/解释不清楚,请评论,我会尽力将它们放在一起。

我目前处于两个独立(虽然已链接)的excel文件的情况。 Src(Book1) Dest(Book2) 它们每个都有一个工作表。

想法是修改Src(包括删除和插入行),我需要将这些更改反映到Dest。

到目前为止,我已经插入了一些代码,使用Before_DoubleClick进行了一些代码。

但是我在删除时遇到了一些问题。

我到目前为止的是:

Private Sub Worksheet_Change(ByVal Target As Range)
    Const destBook As String = "Book2"
    Const destSheet As String = "Sheet2"
    Dim wb1 As Workbook
    Set wb1 = Workbooks(destBook)
    ' Here is the main problem i have. I need a better way to detect  
    ' deletion of one or more rows. Otherwise the Application.Undo 
    ' re-enters the if and it just loops.
    If Target.Address = Target.EntireRow.Address Then
        ' Here i Undo the deletion to be able to copy the values.
        Application.Undo
        Target.Copy
        ' I also haven't found a way to delete again but google can help me on that
        ' Pasting line
        'wb1.Sheets(destSheet).Cells(Target.Row, 1).PasteSpecial   Paste:=xlPastValues
    End If
 End Sub

理想情况下,应该发生的是,删除一行或多行后,我想撤消上一个操作,复制数据,删除行,最后通过另一个工作表中的数据。但是,截至目前,我已撤消撤消上一个操作。它再次调用我的VBA宏并开始循环。

1 个答案:

答案 0 :(得分:0)

我不确定你想要什么,但你必须用新单元格中的值替换公式,或者如果那些单元格应该有一个你可能需要的公式

application.Calculation = xlCalculationManual

删除或更改

application.Calculation = xlCalculationAutomatic

重新开启自动计算

手动是棘手的,因为如果代码崩溃,你会想要确保你没有让工作表处于无法计算的状态