добрый вечер, всем! Помогите поправить макрос чтобы мог преобразовать дату тип Aug 10 2022 в дату (10.08.2022)
я нашел макрос на этом сайте, но я не мог его заставить работать. скажите что нужно справить чтобы работал?
Код |
---|
sub ConvertLongDateToShortDate()
Dim arr As Variant, arrTemp As Variant
Dim CountOfSpaces As Long, lDay As Long, lMonthNumber As Long, lYear As Long, i As Long
Dim Rng As Range
If Selection.Cells.Count = 1 Then
MsgBox "Выделите диапазон ячеек с датами", vbInformation, "Внимание"
Exit Sub
End If
Set Rng = Intersect(Selection, ActiveSheet.UsedRange)
Rng.Replace Chr(160), " "
arr = Rng.Value2
On Error Resume Next
For i = LBound(arr) To UBound(arr)
If arr(i, 1) <> Empty Then
If InStr(1, arr(i, 1), " ", vbBinaryCompare) > 0 Then
CountOfSpaces = Len(arr(i, 1)) - Len(VBA.Replace(arr(i, 1), " ", ""))
If CountOfSpaces = 2 Then
arrTemp = Split(arr(i, 1))
If UBound(arrTemp) = 2 Then
lMonthNumber = NumberOfMonthName(arrTemp(1))
If lMonthNumber > 0 Then
arr(i, 1) = DateSerial(CLng(arrTemp(2)), lMonthNumber, CLng(arrTemp(0)))
End If
End If
End If
End If
End If
Next i
On Error GoTo 0
Rng.Value = arr
End Sub
Private Function NumberOfMonthName(ByVal Str As String) As Long
Dim MonthNames As Variant
MonthNames = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
On Error Resume Next
NumberOfMonthName = Application.Match(LCase(Str), MonthNames, 0)
End Function |