VBA Excel:使用Range.Find方法时出现错误1004

VBA Excel:使用Range.Find方法时出现错误1004,excel,range,vba,Excel,Range,Vba,我正在学习范围。查找方法。我在Excel的a列中有一列字母(a到t),从第1行到第20行 此代码: Public Sub MyFind3() 'Accepts an input for a fluid length search field (column A) Dim WhatToFind As String Dim DataRange As Range Set DataRange = Range("A1", Range("A1").End(xlDown)) WhatToFind = In

我正在学习范围。查找方法。我在Excel的a列中有一列字母(a到t),从第1行到第20行

此代码:

Public Sub MyFind3()

'Accepts an input for a fluid length search field (column A)
Dim WhatToFind As String
Dim DataRange As Range

Set DataRange = Range("A1", Range("A1").End(xlDown))
WhatToFind = InputBox("Enter text to search for:", "Find Text")
Range(DataRange).Find(WhatToFind).Select

End Sub
…在我收到此错误时一直工作到最后一行: “运行时错误1004:应用程序定义或对象定义错误”。 它找不到“查找匹配项”。
有人能指出我的错误吗?非常感谢。

将最后一行更改为:

DataRange.Find(WhatToFind).Select

DataRange
已经是
Range
对象,因此不需要列为
Range(DataRange)

将最后一行更改为:

DataRange.Find(WhatToFind).Select

DataRange
已经是
Range
对象,因此不需要列为
Range(DataRange)

将最后一行更改为:

DataRange.Find(WhatToFind).Select

DataRange
已经是
Range
对象,因此不需要列为
Range(DataRange)

将最后一行更改为:

DataRange.Find(WhatToFind).Select
DataRange
已经是一个
Range
对象,因此不需要列为
Range(DataRange)
。Find()
返回通常要分配给范围变量的范围。我会像这样稍微修改您的代码:

Public Sub MyFind3()

'Accepts an input for a fluid length search field (column A)
Dim WhatToFind As String
Dim DataRange As Range

WhatToFind = InputBox("Enter text to search for:", "Find Text")
Set DataRange = Range("A1", Range("A1").End(xlDown)).Find(What:=WhatToFind)
if not DataRange is Nothing then
  DataRange.select
else
  msgbox (WhatToFind & " wasn't found")
end if

End Sub
这使您能够处理“未找到”情况,并且您现在可以使用范围变量做其他事情

另外,请注意,当您调用
.Find()
时,它将使用最后的任何设置执行,因此设置更多的参数,例如
LookIn
LookAt
、和
MatchCase
将有助于确保此搜索完全按照您的意愿进行。

查找()
返回通常要分配给范围变量的范围。我会像这样稍微修改您的代码:

Public Sub MyFind3()

'Accepts an input for a fluid length search field (column A)
Dim WhatToFind As String
Dim DataRange As Range

WhatToFind = InputBox("Enter text to search for:", "Find Text")
Set DataRange = Range("A1", Range("A1").End(xlDown)).Find(What:=WhatToFind)
if not DataRange is Nothing then
  DataRange.select
else
  msgbox (WhatToFind & " wasn't found")
end if

End Sub
这使您能够处理“未找到”情况,并且您现在可以使用范围变量做其他事情

另外,请注意,当您调用
.Find()
时,它将使用最后的任何设置执行,因此设置更多的参数,例如
LookIn
LookAt
、和
MatchCase
将有助于确保此搜索完全按照您的意愿进行。

查找()
返回通常要分配给范围变量的范围。我会像这样稍微修改您的代码:

Public Sub MyFind3()

'Accepts an input for a fluid length search field (column A)
Dim WhatToFind As String
Dim DataRange As Range

WhatToFind = InputBox("Enter text to search for:", "Find Text")
Set DataRange = Range("A1", Range("A1").End(xlDown)).Find(What:=WhatToFind)
if not DataRange is Nothing then
  DataRange.select
else
  msgbox (WhatToFind & " wasn't found")
end if

End Sub
这使您能够处理“未找到”情况,并且您现在可以使用范围变量做其他事情

另外,请注意,当您调用
.Find()
时,它将使用最后的任何设置执行,因此设置更多的参数,例如
LookIn
LookAt
、和
MatchCase
将有助于确保此搜索完全按照您的意愿进行。

查找()
返回通常要分配给范围变量的范围。我会像这样稍微修改您的代码:

Public Sub MyFind3()

'Accepts an input for a fluid length search field (column A)
Dim WhatToFind As String
Dim DataRange As Range

WhatToFind = InputBox("Enter text to search for:", "Find Text")
Set DataRange = Range("A1", Range("A1").End(xlDown)).Find(What:=WhatToFind)
if not DataRange is Nothing then
  DataRange.select
else
  msgbox (WhatToFind & " wasn't found")
end if

End Sub
这使您能够处理“未找到”情况,并且您现在可以使用范围变量做其他事情


另外,请注意,当您调用
.Find()
时,它将使用最后的设置执行,因此设置更多的参数,例如
LookIn
LookAt
、和
MatchCase
将有助于确保此搜索完全按照您的意愿进行。

谢谢弗里曼。对于“找不到”陷阱,我打算使用如下内容:如果DataRange为Nothing,那么MsgBox(WhatToFind&“not found.”)退出Sub-Else DataRange。选择End If…但您的版本看起来更整洁。再次感谢你。顺便说一句,很抱歉,我无法将其格式正确。谢谢你,弗里曼。对于“找不到”陷阱,我打算使用如下内容:如果DataRange为Nothing,那么MsgBox(WhatToFind&“not found.”)退出Sub-Else DataRange。选择End If…但您的版本看起来更整洁。再次感谢你。顺便说一句,很抱歉,我无法将其格式正确。谢谢你,弗里曼。对于“找不到”陷阱,我打算使用如下内容:如果DataRange为Nothing,那么MsgBox(WhatToFind&“not found.”)退出Sub-Else DataRange。选择End If…但您的版本看起来更整洁。再次感谢你。顺便说一句,很抱歉,我无法将其格式正确。谢谢你,弗里曼。对于“找不到”陷阱,我打算使用如下内容:如果DataRange为Nothing,那么MsgBox(WhatToFind&“not found.”)退出Sub-Else DataRange。选择End If…但您的版本看起来更整洁。再次感谢你。顺便说一句,很抱歉,我无法把它转换成正确格式的表格。我看了15分钟都没有发现它。非常感谢!我很惊讶,虽然它给出了一个错误信息-不是很宽容。再次感谢你。我看了15分钟都没发现。非常感谢!我很惊讶,虽然它给出了一个错误信息-不是很宽容。再次感谢你。我看了15分钟都没发现。非常感谢!我很惊讶,虽然它给出了一个错误信息-不是很宽容。再次感谢你。我看了15分钟都没发现。非常感谢!我很惊讶,虽然它给出了一个错误信息-不是很宽容。再次感谢你。