为什么在此v​​ba代码中出现“错误424”?

时间:2019-07-25 14:23:29

标签: excel vba

我想在excel 2019中做一个简单的小搜索和替换功能,我只是vba的新手,所以请帮助... 我不知道为什么此代码中有错误,并且没有突出显示任何内容

我不知道该怎么做

Sub One_Find()
    Dim FieldRange As Range
    Dim FirstAddress As String
    Set FieldRange = Cells.Find(What:=ActiveCell.Value, LookIn:=xlValues, LookAt:=xlWhole)
    Set FirstAddress = FieldRange.Address
    Do
        Set FieldRange = Cells.FindNext(FieldRange)
    Loop While FieldRange.Address <> FirstAddress
    Set FieldRange.Value = "WORKS"

End Sub

它只是说'错误424'或需要对象,但我不知道在哪里

1 个答案:

答案 0 :(得分:3)

需要一个对象,因为您在此处使用Set关键字:

Set FieldRange.Value = "WORKS" ' string

在这里:

Set FirstAddress = FieldRange.Address ' string

VBA中有两种类型的分配:LetSet。分配时,您正在进行Let分配:

[Let] foo = 2 + 2 ' foo is an integer value
[Let] bar = "something" ' bar is a string value

请注意,Let关键字已过时/多余,通常会省略。

分配对象引用时,您正在进行Set分配:

Set foo = ActiveSheet.Range("A1") ' foo is a Range object reference
Set bar = Application ' bar is an Application object reference

您可以将具有默认成员的对象强制转换为值:

[Let] foo = ActiveSheet.Range("A1") 'implicit: Range.Value
[Let] bar = Application 'implicit: Application.Name

但是您不能将值“设置为强制”到对象引用中:

Set foo = "something" 'illegal; an object is required on the right-hand side

分配时不要使用Set关键字。