我想在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'或需要对象,但我不知道在哪里
答案 0 :(得分:3)
需要一个对象,因为您在此处使用Set
关键字:
Set FieldRange.Value = "WORKS" ' string
在这里:
Set FirstAddress = FieldRange.Address ' string
VBA中有两种类型的分配:Let
和Set
。分配值时,您正在进行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
关键字。