我想在某个表(wsCaseinfo)中的范围A1-A99中搜索“概述”一词。我在“ with”行上收到1004错误。
该代码是使用2个不同文件中的3个不同工作表的较大代码的一部分。代码循环遍历100个文件,因此可以体会到一些有效的知识。非常感谢您的帮助。
With wsCaseinfo.Range(Cells(1, 1), Cells(99, 1))
Set cellx = .Find(what:="Overview", LookAt:=xlPart)
End With
答案 0 :(得分:6)
您需要在Cells()
后面加上父表:
With wsCaseinfo.Range(wsCaseinfo.Cells(1, 1), wsCaseinfo.Cells(99, 1))
否则,Cells()
将引用活动工作表,而不是与Range()
相同的工作表。
您也可以将With
嵌套在前一个With
With wsCaseinfo
With .Range(.Cells(1, 1), .Cells(99, 1))
Set cellx = .Find(what:="Overview", LookAt:=xlPart)
End With
End With
答案 1 :(得分:1)
With Sheets("wsCaseinfo").Range(Sheets("wsCaseinfo").Cells(1, 1), Sheets("wsCaseinfo").Cells(99, 1))
Set cellx = .Find(What:="Overview", LookAt:=xlPart)
End With
三种引用图纸的四种方式:
名称(如上)
索引(例如Sheets(4)
)
代号(例如Sheet4
)
使用变量,例如
Dim MySheet As Worksheet
Set MySheet = ThisWorkbook.Worksheets("Sheet4")
然后使用
MySheet.Cells()
答案 2 :(得分:0)
您可以尝试:
编辑版本
Option Explicit
Sub test()
Dim rngToSearch As Range
Dim Result As Range
Set rngToSearch = wsCaseinfo.Range("A1:A99")
Set Result = rngToSearch.Find(What:="Overview", LookIn:=xlValues, LookAt:=xlWhole)
If Not Result Is Nothing Then
MsgBox "The word ""Overview"" appears in:" _
& vbNewLine & "Row " & Result.Row _
& vbNewLine & "Column " & Result.Column _
& vbNewLine & "Address " & Result.Address
Else
MsgBox "The word ""Overview"" does not exist in range " & rngToSearch.Address & "."
End If
End Sub
答案 3 :(得分:0)
如果您使用Cells()
,则必须符合条件。相反:
Sub luxation()
Dim cellx As Range, wsCaseinfo As Worksheet
Set wsCaseinfo = Sheets("Sheet1")
With wsCaseinfo.Range("A1:A99")
Set cellx = .Find(what:="Overview", LookAt:=xlPart)
MsgBox cellx.Address
End With
End Sub
更改Set
语句以适合您的需求。
答案 4 :(得分:0)
With wsCaseInfo Set cellx = .Range("A1:A99").Find("Overview", , xlValues, xlPart) End With
With wsCaseInfo
Set cellx = .Range("A1:A99").Find("Overview", , xlValues, xlPart)
If Not cellx Is Nothing Then
Debug.Print cellx.Address
Else
Debug.Print "Cell range not found."
End If
End With
Sub FindInWorksheet()
Const cSheet As String = "Sheet1"
Dim wsCaseInfo As Worksheet
Dim cellx As Range
Set wsCaseInfo = ActiveWorkbook.Worksheets(cSheet)
With wsCaseInfo
' Full
'Set cellx = .Range("A1:A99").Find("Overview", .Range("A99"), _
xlValues, xlPart, xlByColumns, xlNext, False)
' Preferable
'Set cellx = .Range("A1:A99").Find("Overview", , _
xlValues, xlPart, xlByColumns)
' Minimal
Set cellx = .Range("A1:A99").Find("Overview", , xlValues, xlPart)
If Not cellx Is Nothing Then
Debug.Print cellx.Address
Else
Debug.Print "Cell range not found."
End If
End With
End Sub
A2
并以A1
结尾,这通常是可取的,因为我们有
第一行中的标题。但是要从A1
开始搜索并结束
如果使用A99
,则必须将 After 参数设置为"A99"
。Find
时, SearchOrder 被保存。
xlValues
,您可以避免
搜索公式(或注释)。xlPart
,以在仅属于其中一部分的单元格中找到 What 参数(Overview
)的值他们例如将找到Product Overview
或Overview of Parts
。是吗?xlNext
,其中
在代码中使用,因此可以安全地省略。False
来查找OverView
或ovErView
,此处可能没有问题。