在VBA中search整个工作簿,然后将结果粘贴到另一个工作表中

首先,在信贷到期的情况下给予贷款。 这是使用来自Mr.Excel.com和exceltip.com的代码。

现在我已经知道了,我试图创build一个searchfunction,它将在Excel中search我的9个工作表文档,以查找input到search框中的值。 然后将这些值粘贴到工作簿的第一页上。

我需要在代码中更改哪些内容才能粘贴到search页面的正确位置? 我试图在最后一个循环中更改事物,因为那是我得到“运行时错误91.对象variables或块variables未设置”的地方。

我GOOGLE了那个错误,但variables总是把我搞砸,所以这可能是问题。 search页面。 这是debugging器停止的地方。 这是我的代码到目前为止。

Sub Find_one() 'Find Function For ERF Spreadsheet' 'Type in Box, Press Button, Display the Results' Dim ws As Worksheet, Found As Range Dim myText As String, FirstAddress As String Dim AddressStr As String, foundNum As Integer myText = Range("D5") If myText = "" Then Exit Sub For Each ws In ThisWorkbook.Worksheets With ws 'Do not search sheet1' If ws.Name = "Sheet1" Then GoTo myNext Set Found = .UsedRange.Find(What:=myText, LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False) If Not Found Is Nothing Then FirstAddress = Found.Address Do foundNum = foundNum + 1 AddressStr = AddressStr & .Name & " " & Found.Address & vbCrLf Set Found = .UsedRange.FindNext(Found) 'Found.EntireRow.Copy _ 'Destination:=Worksheets("Sheet4").Range("A65536").End(xlUp).Offset(1, 0) Loop While Not Found Is Nothing And Found.Address <> FirstAddress End If myNext: End With Next ws If Len(AddressStr) Then Sheet8.Range("B18") = ws.Cells(x, 1) Sheet8.Range("C18") = ws.Cells(x, 2) Sheet8.Range("D18") = ws.Cells(x, 3) Sheet8.Range("E18") = ws.Cells(x, 4) Sheet8.Range("F18") = ws.Cells(x, 5) Sheet8.Range("G18") = ws.Cells(x, 6) Sheet8.Range("H18") = ws.Cells(x, 7) Sheet8.Range("I18") = ws.Cells(x, 8) Sheet8.Range("J18") = ws.Cells(x, 9) Else: MsgBox "Unable to find " & myText & " in this workbook.", vbExclamation End If End Sub 

这是最后一个循环的原始代码…

 If Len(AddressStr) Then MsgBox "Found: """ & myText & """ " & foundNum & " times." & vbCr & _ AddressStr, vbOKOnly, myText & " found in these cells" Else: MsgBox "Unable to find " & myText & " in this workbook.", vbExclamation End If 

在这里,试试这个。 我redid我如何解释第一部分。 我不完全确定你想要做什么,所以让我知道这是否工作或出错。

 Sub FindOne() Dim k As Integer Dim myText As String, searchColumn As String Dim totalValues As Long Dim nextCell As Range k = ThisWorkbook.Worksheets.Count myText = Sheets(1).Range("D5").Value If myText = "" Then MsgBox "No Address Found" Exit Sub End If Select Case ComboBox1.Value Case "Equipment Number" searchColumn = "A" Case "Sequence Number" searchColumn = "B" Case "Repair Order Number(s)" searchColumn = "D" Else MsgBox "Please select a value for what you are searching by." End Sub End Select For i = 2 To k totalValues = Sheets(i).Range("A65536").End(xlUp).Row ReDim AddressArray(totalValues) As String For j = 0 To totalValues AddressArray(j) = Sheets(i).Range(searchColumn & j + 1).Value Next j For j = 0 To totalValues If (InStr(1, AddressArray(j), myText) > 0) Then Set nextCell = Sheets(1).Range("A65536").End(xlUp).Offset(1, 0) Range(nextCell, nextCell.Offset(0, 8)).Value = Sheets(i).Range("A" & j, "I" & j).Value End If Next j Next i End Sub 

另外我不知道代码的第二部分应该是什么,所以如果你想详细说明If Len(AddressStr) Then的部分, If Len(AddressStr) Then我会很感激它,因为它甚至不能作为If …然后声明大声笑:)