保存search结果并返回地址列表

我正在通过手动input在列中运行search循环,并在find的项目的右侧选取列的信息。

我不想立即显示结果,而是在search结束时以Messagebox的表格的forms显示结果。

因此,我需要某种增长的内存堆栈或数组,但我不知道如何实现这一点。

我到目前为止写的代码下面,search工作,信息收集没有。 有人可以帮忙吗?

 Sub Find_Tag() Dim lr&, i& Dim myTag As String lr = Range("E" & Rows.Count).End(xlUp).Row myTag = InputBox("Enter Tag. " & Chr(10) & "Use the syntax bellow:" & Chr(10) & "" & Chr(10) & " J-XXXX") For i = 1 To lr If Cells(i, "E").Value = myTag Then Cells(i, "E").Select Cells(i, "G").Select Cells(i, "P").Select MsgBox Cells(i, "E").Value & " " & Cells(i, "G").Value & " " & Cells(i,"P").Value End If Next i End Sub 

您可以增加一条消息并将其显示在一个MessageBox 。 像这样的东西:

 dim strMessage as string dim strSpace as string strSpace = " " For i = 1 To lr If Cells(i, "E").Value = myTag Then strMessage = strMessage & strSpace & Cells(i, "E").value strMessage = strMessage & strSpace & Cells(i, "G").value strMessage = strMessage & strSpace & Cells(i, "P").value End If Next i MsgBox strMessage 

我没有问题,你的代码,除了没用。select你正在使用。

 Sub Find_Tag() Dim lr&, i& Dim myTag As String Dim result As String lr = Range("E" & Rows.Count).End(xlUp).Row myTag = InputBox("Enter Tag. " & Chr(10) & "Use the syntax below:" & Chr(10) & "" & Chr(10) & " J-XXXX") For i = 1 To lr If Cells(i, "E").Value = myTag Then result = Cells(i, "E").value & " " & Cells(i, "G").value & " " & Cells(i, "P").value MsgBox result End If Next i End Sub 

这与您发布的内容相同,您确定要定位非空值吗?

下面的代码将从“E”,“G”和“P”列中的值“E”= myTag中的值myTagStringArr数组中。

并在循环结束时,将显示每个占用MsgBox数组元素。

 Sub Find_Tag() Dim lr&, i&, j& Dim myTag As String Dim StringArr() As Variant lr = Range("E" & Rows.Count).End(xlUp).Row myTag = InputBox("Enter Tag. " & Chr(10) & "Use the syntax bellow:" & Chr(10) & "" & Chr(10) & " J-XXXX") ReDim StringArr(1 To 1000) '<-- init to large size , optimize the size later j = 1 For i = 1 To lr If range("E" & i).Value = myTag Then StringArr(j) = Range("E" & i).Value & " " & Range("G" & i).Value & " " & Range("P" & i).Value j = j + 1 End If Next i ReDim Preserve StringArr(1 To j - 1) '<-- optimize array size For i = 1 To UBound(StringArr) ' display all array elements in message box MsgBox StringArr(i) Next i End Sub 
  • 使用Find意味着你也有一个范围来处理find的地址( rng2
  • 代码通过rng3在E( rng3 )中成功匹配的E,G and P的三列范围来完成,

 Sub PlanB() Dim rng1 As range Dim rng2 As range Dim rng3 As range Dim strMyTag As String Dim strAdd As String strMyTag = InputBox("Enter Tag. " & Chr(10) & "Use the syntax below:" & Chr(10) & "" & Chr(10) & " J-XXXX") Set rng1 = Columns("E:E").Find(strMyTag, , xlFormulas, xlWhole) If Not rng1 Is Nothing Then strAdd = rng1.Address Set rng2 = rng1 Do Set rng1 = Columns("E:E").FindNext(rng1) If Not rng1 Is Nothing Then If rng1.Address = strAdd Then Exit Do Set rng2 = Union(rng2, rng1) Else Exit Do End If Loop Else MsgBox strMyTag & " not Found" Exit Sub End If MsgBox strMyTag & " has been found these locations: " & rng2.Address Set rng3 = Union(rng2, rng2.Offset(0, 2), rng2.Offset(0, 11)) Application.Goto rng3 End Sub