当我更新我的数据时,它颠倒了我的Sub的结果

我有一个报告,我直接从我们的数据库(查询),但它包括更多的信息,而不是必要的(项目没有值),所以我添加了一个子例程删除额外的行。 该子程序似乎很好地纠正空行。 然后,我有另一个子程序,复制返回的值,并将其放在另一个工作表已经布局的表,然后再添加签名块的底部。 当这一切完成后,用户复制该表格,并将其重命名为适用的月份和年份。 这将是一个完成和简单的过程,但……

问题是,当刷新工作簿数据以创build新报表时,格式化和完成报表的所有以前的副本突然包括已删除的行。 我不明白如何删除的行返回到不同的工作表上的报告,但这里是我用来完成这个VBA。 (我已经设置这个在更新数据时自动运行,但是我得到了相同的结果)

希望有人能帮忙,谢谢你提前帮忙。

Private Sub Worksheet_Change(ByVal Target As Range) Dim wb1 As Workbook Dim lr As Long, i As Long Set wb1 = ActiveWorkbook With wb1.Sheets("DATA SHEET") lr = Application.Max(.Cells(Rows.Count, 4).End(xlUp).Row, _ .Cells(Rows.Count, 6).End(xlUp).Row) For i = lr To 1 Step -1 If .Cells(i, 4).Value = 0 And _ .Cells(i, 5).Value = 0 And _ .Cells(i, 7).Value = 0 And _ .Cells(i, 8).Value = 0 And _ .Cells(i, 9).Value = 0 And _ .Cells(i, 10).Value = 0 Then .Rows(i).EntireRow.Delete End If Next i End With End Sub 

这里是VBA复制数据,这只是一个logging的macros。 我需要保持我的格式,但没有看到如何只传递值和格式。

 Sub CopyToTemplate() ' ' CopyToTemplate Macro ' ' Rows("3:100").Select Selection.Copy Sheets("SAVE TEMPLATE").Select Range("A7").Select ActiveSheet.Paste End Sub 

很可能,您正在复制自动链接到您的数据查询的单元格。 因为你正在复制整个单元格,所以链接就随之而来。

要仅复制值和格式,请replace

 Range("A7").Select Activesheet.Paste 

 Range("A7").PasteSpecial Paste:=xlPasteValues Range("A7").PasteSpecial Paste:=xlPasteFormats 

这里是关于PasteSpecial的文档。