Я удалю свой «первый ответ», но вот мой реальный ответ для проверки:
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
Возможно, вам придется удалить .Value после NewDate (вам придется попробовать).
Поскольку я не уверен, что именно вы хотите удалить, я напишу код, который удаляет всю строку в мастер-данных, где в столбце F дата (месяц и год) соответствует дате «сегодня»:
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
Скажите, получилось ли, а что нет (мне интересно знать, и я могу узнать больше из этого), спасибо :)
person
Kathara
schedule
13.01.2016