Excel Macro для пошуку та заміни дат


0

У мене є макрос, який повинен переглядати дані, шукати дати, які не розпізнаються в excel, і змінювати їх формат, щоб вони були більш "чудовими". Коли я намагаюся запустити його, я отримую помилку під час виконання "450": неправильна кількість аргументів або присвоєння недійсного властивості.

Може хтось перегляне мій код і допоможе мені розпізнати проблему?

Дати відформатовані "201611 - (листопад 2016)" та були імпортовані з файлу CSV.

Ось мій код

Sub TestFind()
With Worksheets("Sheet1").Range("a1:a500")
    Set c = .Find("201* - (*** 201*)", LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            c.Value = .Date(.Left(c.Value, 4), (.Mid(c.Value, 5, 2)), 1)
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With

End Sub

Відповіді:


0

Нижче переглянуто код.

Найбільш істотна зміна полягає в цьому:

c.Value = .Date(.Left(c.Value, 4), (.Mid(c.Value, 5, 2)), 1)

До цього:

c.Value = DateSerial(Left(c.Value, 4), (Mid(c.Value, 5, 2)), 1)

Зауважте, я використовував DateSerialфункцію для створення дати та видаляв точки під час дзвінка DateSerial, Leftі Mid, оскільки це функції, а не властивості.

Ось повна функція:

Sub TestFind()
    With Worksheets("Sheet1").Range("a1:a500")
        Set c = .Find("201* - (*** 201*)", LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do While Not c Is Nothing
                c.Value = DateSerial(Left(c.Value, 4), (Mid(c.Value, 5, 2)), 1)
                Set c = .FindNext(c)
                If Not c Is Nothing Then
                    If c.Address = firstAddress Then Exit Do
                End If
            Loop
        End If
    End With
End Sub
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.