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

时间:2017-12-04 13:30:14

标签: excel vba excel-vba

我试图在特定工作表中不是活动工作表的特定列中进行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

2 个答案:

答案 0 :(得分:2)

无需在那里选择任何内容:

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

答案 1 :(得分:1)

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

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

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

对于可取的部分,尽量避免使用“选择” -  How to avoid using Select in Excel VBA