Я пишу код, который сохраняет текущую область листа в переменной диапазона, затем отправляю ее в функцию для сортировки данных и затем показываю результат в окне сообщения.
Я сортирую ярость только для того, чтобы представить нав порядке возрастания, но не хочу, чтобы данные на листе были затронуты.Но после вызова функции мои данные на листе будут отсортированы как
Имея ниже предложение в другом модуле:
Set arg = .Range("A1").CurrentRegion
Код функции
Function sortOnOneCol(ByVal ary As Range) As String
Dim msg As String
Dim I, J As Long
Dim sorted_rng As Range
Dim lstRow, lstCol As Long
Set sorted_rng = ary
sorted_rng.SortSpecial key1:=Range("C1"), order1:=xlAscending, Header:=xlYes
msg = "Certificates Expire Dates " & vbCrLf & vbCrLf
lstRow = sorted_rng.Rows.Count
lstCol = sorted_rng.Columns.Count
For I = 2 To lstRow
If sorted_rng.Range("C" & I) - (Date) <= 30 Then
msg = msg & sorted_rng.Range("B" & I).Value & " in " & sorted_rng.Range("C" & I).Value - Date & " days" & vbCrLf
ElseIf sorted_rng.Range("C" & I) - (Date) >= 30 And sorted_rng.Range("C" & I) - (Date) <= 90 Then
msg = msg & sorted_rng.Range("B" & I).Value & " in " & sorted_rng.Range("C" & I).Value - Date & " days" & vbCrLf
ElseIf sorted_rng.Range("C" & I) - (Date) >= 90 And sorted_rng.Range("C" & I) - (Date) <= 180 Then
msg = msg & sorted_rng.Range("B" & I).Value & " in " & sorted_rng.Range("C" & I).Value - Date & " days" & vbCrLf
Else
sorted_rng.Range("C" & I).Interior.Color = xlNone
End If
Next I
Set sorted_rng = Null
sortOnOneCol = msg
End Function