Сортировать по дате в неактивированном листе при деактивации листа - PullRequest
0 голосов
/ 08 января 2019

У меня есть таблица под названием «Вехи», в которой содержится таблица с описанием вехи и целевой датой их завершения.

Я пытаюсь создать макрос, который при отключении электронной таблицы «Вехи»:

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  
...