所以,我回来时有一个更具体的答案/问题。 另外,对不起,我在几周前就拿到了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宏并开始循环。
答案 0 :(得分:0)
我不确定你想要什么,但你必须用新单元格中的值替换公式,或者如果那些单元格应该有一个你可能需要的公式
application.Calculation = xlCalculationManual
删除或更改
application.Calculation = xlCalculationAutomatic
重新开启自动计算
手动是棘手的,因为如果代码崩溃,你会想要确保你没有让工作表处于无法计算的状态