在特定工作表中搜索文本字符串

Searching for a string of text in a specific worksheet

提问人:Sidvi 提问时间:12/4/2017 最后编辑:braXSidvi 更新时间:12/4/2017 访问量:66

问:

我试图让excel搜索特定工作表中特定列中的文本字符串,该文本字符串不是活动工作表。VBA给了我一个错误,说我不能使用这种选择方法。所以我的问题是,你有什么建议以另一种方式去做吗?

Worksheets("Parts for renovation").Columns("Q:Q").Select
Set cell = Selection.Find(What:="Total transfer price", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)

If cell Is Nothing Then

    Exit Sub

Else

    Worksheets("Internal").Cells(29, 4) = Worksheets("Parts for Renovation").ActiveCell.Offset(0, 4)

End If
VBA Excel

评论


答:

2赞 Rory 12/4/2017 #1

无需在此处选择任何内容:

With Worksheets("Parts for renovation").Columns("Q:Q")
    Set cell = .Find(What:="Total transfer price", After:=.Cells(1), LookIn:=xlFormulas, _
                LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False)    
    If cell Is Nothing Then    
        Exit Sub
    Else
        Worksheets("Internal").Cells(29, 4) = Cell.Offset(0, 4)
    End If
End With

评论

2赞 Shai Rado 12/4/2017
你打字太快了,你忘记了End With ;)
0赞 Rory 12/4/2017
@ShaiRado 谢谢!
1赞 Vityata 12/4/2017 #2

您的错误来了,因为您在非活动工作表上选择了一个范围。这是您通常应该避免选择的原因之一。

但是,如果你想让你的代码工作(这是非常不可取的),你可以考虑在选择范围之前选择工作表:

Worksheets("Parts for renovation").Select
Columns("Q:Q").Select

对于可取的部分,尽量避免使用“选择” - 如何避免在Excel VBA中使用选择