我有一個零件數據庫,需要通過搜索來查找所搜索的內容。我創建了一個搜索頁面,該頁面提供了搜索特定列或在每列中搜索的選項。然後打印它在搜索頁面上找到的信息。我已經通過列部分進行了搜索,但我正在努力搜索所有部分。我一直在「AddressArray(j)= Sheets(i).Range(searchColumn & j + 1).Value」這一行發現錯誤1004。我認爲它與該行只能搜索列而不是整個工作簿有關,但我不知道如何解決。使用VBA搜索整個工作簿
下面是代碼
Sub FindAll()
Range("B19:J1500") = ""
Application.ScreenUpdating = False
Dim k As Integer, EndPasteLoopa As Integer
Dim myText As String, searchRange As String
Dim totalValues As Long
Dim nextCell As Range
k = ThisWorkbook.Worksheets.Count
myText = ComboBox1.Value
Set nextCell = Range("B20")
If myText = "" Then
MsgBox "No Address Found"
Exit Sub
End If
Select Case ComboBox2.Value
Case "SEARCH ALL"
searchRange = Columns("A:J")
End Select
For i = 2 To k
totalValues = Sheets(i).Cells(Rows.Count, "A").End(xlUp).Row
ReDim AddressArray(totalValues) As String
For j = 0 To totalValues
AddressArray(j) = Sheets(i).Range(searchRange & j + 1).Value
Next j
For j = 0 To totalValues
If InStr(1, AddressArray(j), myText) > 0 Then
EndPasteLoop = 1
If (Sheets(i).Range(searchRange & j + 2).Value = "") Then EndPasteLoop = Sheets(i).Range(searchRange & j + 1).End(xlDown).Row - j - 1
For r = 1 To EndPasteLoop
Range(nextCell, nextCell.Offset(0, 8)).Value = Sheets(i).Range("A" & j + r, "I" & j + r).Value
Set nextCell = nextCell.Offset(1, 0)
Next r
End If
Next j
Next i
Debug.Print tc
Application.ScreenUpdating = True
End Sub
在該行之前,您絕不會給'searchColumn'一個值,因此它沒有值。另外,你在尋找什麼樣的範圍?如果'searchColumn'將會是一個字母,比如'A','B'等,你可能需要做'... Range(searchColumn&「:」&j + 1).Value', – BruceWayne
您在Chip Pearson [here](http://www.cpearson.com/excel/FindAll.aspx)構建和描述的「FindAll」功能之後,並且還記錄了Ron de Bruin [here](https: //www.rondebruin.nl/win/s9/win006.htm) –
@BruceWayne我改變了上面的事情。我的意思是將任何「searchColumn」更改爲「searchRange」,因爲我正在搜索整個工作簿,所以我不只是在每個頁面上搜索特定的列。我不知道這是否會改變你的答案。我也在「searchRange = Columns(」A:J「)」出現「類型不匹配」錯誤。 –