我的代码如下:
Sub intersection_1()
Dim rg1 As Range
Dim rg2 As Range
Set rg1 = Range("A:A")
Set rg2 = Range("5:5")
Intersect(Worksheets("Machine output").Range("21:21").Find(Sheets("History_1").Range("$D$4")), rg2).Select
End Sub
发布于 2021-05-18 09:08:36
当你在VBA中摸索的时候,最好是有条不紊地去做,也就是说,不要试图在一个命令中混用Find
和Select
。首先查找,只有在找到后才选择。对Find
输入和Find
输出应用相同的原则。确定要在独立于开始搜索的代码行中查找的内容。
当然,还要为Find
函数本身创建所需的透明性。它有很多论据。你会发现他们解释了here,它将帮助你写出清晰的代码,如果你有条不紊地列出他们,你可以很容易地检查每一个。如果您遵循这些建议,您的代码可能如下所示。
Sub FindAndSelect()
Dim SearchItem As Variant ' criterium to look for
Dim DataRng As Range ' the range to search in
Dim Fnd As Range ' the cell found
SearchItem = Worksheets("History_1").Cells(4, "D").Value
Set DataRng = Worksheets("Machine Output").Rows(21)
Set Fnd = DataRng.Find(What:=SearchItem, _
After:=DataRng.Cells(1), _
LookIn:=xlValues, _
Lookat:=xlWhole, _
Searchorder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not Fnd Is Nothing Then
MsgBox "Searchitem was found at " & Fnd.Address(0, 0)
Else
MsgBox "SearchItem was not found."
End If
End Sub
以上所有代码都等同于您的最后一行代码,但仍然省略了Select
。如果搜索成功,则输出将是'Machine Output'!21:21中找到SearchItem的单元格地址。如果要选择该单元格,命令将为Fnd.Select
。
您的代码不会暗示该结果与rg1或rg2的关系。但是,如果您继续有条不紊地前进,每行新代码一小步,我相信您将能够建立一个服务于您的目的的连接。
https://stackoverflow.com/questions/67577942
复制相似问题