У меня есть таблица под названием «Вехи», в которой содержится таблица с описанием вехи и целевой датой их завершения.
Я пытаюсь создать макрос, который при отключении электронной таблицы «Вехи»:
1) просматривает список Вех в электронной таблице «Вехи»
2) если Milestone завершен (= закончен), макрос копирует описание и дату вехи в другой электронной таблице с именем «Datasheet_Complete»
3) Сортировка по дате тех вех
Я не знаю, что не так с моим кодом, но кажется, что функция «Сортировка» не работает. Часть копирования / вставки работает
Вот код, вы можете мне помочь?
Большое спасибо!
Private Sub Worksheet_Desactivate()
Dim i As Integer
Dim j As Integer
Dim h As Integer
Dim TxtInColA As String
Dim TxtInColB As String
Dim TxtInColC As String
Dim TxtInColA1 As String
Dim TxtInColB1 As String
Dim TxtInColC1 As String
Dim TxtInColD As String
Dim TxtInColE As String
Dim EndRow1 As Integer
Dim Range1 As String
Dim RangeA As Range
For i = 2 To 20
TxtInColA = ThisWorkbook.Sheets("Milestones").Cells(i, 1).Value
TxtInColB = ThisWorkbook.Sheets("Milestones").Cells(i, 2).Value
TxtInColC = ThisWorkbook.Sheets("Milestones").Cells(i, 3).Value
TxtInColA1 = ThisWorkbook.Sheets("Milestones").Cells(i - 1, 1).Value
TxtInColB1 = ThisWorkbook.Sheets("Milestones").Cells(i - 1, 2).Value
TxtInColC1 = ThisWorkbook.Sheets("Milestones").Cells(i - 1, 3).Value
If StrComp(TxtInColA, "", vbTextCompare) = 0 _
And StrComp(TxtInColB, "", vbTextCompare) = 0 _
And StrComp(TxtInColC, "", vbTextCompare) = 0 _
And StrComp(TxtInColA1, "", vbTextCompare) <> 0 _
And StrComp(TxtInColB1, "", vbTextCompare) <> 0 _
And StrComp(TxtInColC1, "", vbTextCompare) <> 0 _
Then
j = i - 1
End If
Next i
'copy milestones in a seperate sheet
h = 0
q = 0
ThisWorkbook.Sheets("Datasheet_Completed").Range("A1:B1000").ClearContents
ThisWorkbook.Sheets("Datasheet_Next").Range("A1:B1000").ClearContents
Selection.Clear
For i = 2 To j
TxtInColB = ThisWorkbook.Sheets("Milestones").Cells(i, 2).Value
TxtInColD = ThisWorkbook.Sheets("Milestones").Cells(i, 4).Value
TxtInColE = ThisWorkbook.Sheets("Milestones").Cells(i, 5).Value
If StrComp(TxtInColE, "Yes", vbTextCompare) = 0 Then
h = h + 1
ThisWorkbook.Sheets("Datasheet_Completed").Cells(h, 1).Value = TxtInColD
ThisWorkbook.Sheets("Datasheet_Completed").Cells(h, 2).Value = TxtInColB
End If
Next i
EndRow1 = CStr(h)
Range1 = "A2" & ":" & "A" & EndRow1
Set RangeA = ThisWorkbook.Sheets("Datasheet_Completed").Range(Range1)
ThisWorkbook.Sheets("Datasheet_Completed").Sort.SortFields.Clear
ThisWorkbook.Sheets("Datasheet_Completed").Sort.SortFields.Add Key _
:=RangeA, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortTextAsNumbers
With ThisWorkbook.Sheets("Datasheet_Completed").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub