我有一个宏,它应该遍历数据,搜索 excel 无法识别的日期,并更改其格式,使它们更“适合 excel”。当我尝试运行它时,我收到运行时错误“450”:参数数量错误或属性分配无效。
有人可以查看我的代码并帮助我找出问题所在吗?
日期格式为“201611 - (2016 年 11 月)”,已从 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
以下是修改后的代码。
最显著的变化来自此:
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