我有这个代码完全正常,但它很慢,我得到的印象可以改善。我对VBA很陌生,我花了一小段时间才开始工作,所以我在这里发帖,希望你能给我一些很好的提示。
我有一个数据列,其中包含大约一年的日期。我只需要最近两个月的数据。这是我的代码:
Dim Export As Worksheet
Set Export = Worksheets(1)
'Set Booking Date Variable
Dim BookingDate As Date
Export.Select
Range("A2").Select
BookingDate = ActiveCell.Offset(0, 1).Value
' Set Current Month Variable
Dim CurrentMonth As Integer
CurrentMonth = Month(BookingDate)
CurrentYear = Year(BookingDate)
' Set Export Range
Dim ExportRange As Range
Set ExportRange = Export.Range("A2").CurrentRegion
'Sort by BookingDate
Export.Sort.SortFields.Clear
ExportRange.Sort Key1:=Export.Range("B1"), order1:=xlAscending, _
Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlSortColumns, _
DataOption1:=xlSortNormal
以上是设置,其主要目的是获取当前日期变量。我想在这里我可以在excel中使用ISDATE公式,但我不完全确定如何。
'Delete all rows that are more than two months past
Export.Range("A2").Select
'Delete irrelevant years
Do Until ActiveCell.Value = ""
BookingYear = Year(ActiveCell.Offset(0, 1).Value)
If BookingYear = CurrentYear Then
ActiveCell.Offset(1, 0).Select
Else
Rows(ActiveCell.Row).Select
Selection.Delete Shift:=xlUp
End If
Loop
Export.Range("A2").Select
'Delete irrelevant months
Do Until ActiveCell.Value = ""
BookingMonth = Month(ActiveCell.Offset(0, 1).Value)
If BookingMonth = CurrentMonth Then
ActiveCell.Offset(1, 0).Select
ElseIf BookingMonth = CurrentMonth - 1 Then
ActiveCell.Offset(1, 0).Select
Else
Rows(ActiveCell.Row).Select
Selection.Delete Shift:=xlUp
End If
Loop
这是我遇到特殊麻烦的地方,代码需要一段时间才能运行。让它工作的主要问题是我无法保存一个月前的数据。我只能保持当月(有时是去年的月份)。整个代码运行缓慢,我认为这与我没有足够有效地使用内存的事实有关,但我对编码一般都不太了解以改进它。
任何有关变更的提示和建议都将不胜感激。 谢谢!