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