我会删除我的“第一个答案”,但这里是我真正的答案测试:
Sub Send() 'asuming that this Sub is located in the "OriData"-Workbook
Dim OriData As Workbook
Set OriData = ThisWorkbook
Dim MasterData As Workbook
Set MasterData = Workbooks.Open("C:\Users\BB")
Dim ODSht As Worksheet
ODSht = OriData.Sheets("AA")
Dim MDSht As Worksheet
MDSht = MasterData.Sheets("CC")
Dim LastRow As Long
LastRow = MDSht.Cells(MDSht.Rows.Count, "a").End(xlUp).Row 'Last Row in Masterdata which contains data in Column a
Dim NewDate As Date
NewDate = MDSht.Cells(LastRow, 6) 'Last row, column F
If month(Date) = month(NewDate.Value) And Year(Date) = Year(NewDate.Value) Then
也许你会必须在NewDate后删除.Value(您必须尝试)。
因为我不确定你要删除的是什么,我会写出代码,masterdata中的整行被删除,其中F列中的日期(月和年)对应于“today”的日期:
MDSht.Row(LastRow).Delete
如果你想删除不止一行,你将不得不相应地更改代码,但这可能会帮助你一点点。
End If
MasterData.Save
MasterData.Close
为什么在你的代码是你复制范围(A3:F19)和你设置为0(C3:E19)的范围不一样?
OriData.Activate
ODSht.Range("A3:F19").Value = 0
OriData.Save
OriData.Close
End Sub
如果你会做一个功能了LASTROW和NewDate你可能有新的数据回路它没有进一步的并发症,每次来控制:
Function LastRow(WS As Worksheet)
LastRow = WS.Cells(WS.Rows.Count, "A").End(xlUp).Row
End Function
Function NewDate(Sht As Worksheet, R As Long)
NewDate = Sht.Cells(R, 6).Value
End Function
从之前继IF-条件:
For DRow = 1 To LastRow(MDSht)
If (month(Date) = month(NewDate(MDSht, DRow))) And (Year(Date) = Year(NewDate(MDSht, DRow))) Then
MDSht.Row(DRow).Delete
ElseIf DRow = LastRow(MDSht)
MsgBox "Finished", vbokOnly
Exit Sub
End If
Next DRow
请告诉我,如果它工作,什么都没有(有趣的是我知道,我可以从中了解更多),谢谢:)