У меня есть макрос, который должен проходить через данные, искать даты, которые не распознаются Excel, и изменять их формат, чтобы они были более "дружественными к 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

1 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .