我正在处理excel的VBA代码,该代码应该搜索特定列以查找我们正在查找的部件号并从该行中提取一些数据。这是一个不断增长的数据库,因此我们需要搜索到最后一行的部件号。在电子表格的其他部分,我使用了此代码
' Finds HW part number in Sheet1
'Get "Sheet1" Index
for i=1 to objWorkbook.WorkSheets.Count
if InStr(objWorkbook.WorkSheets(i).Name,"Sheet1") > 0 Then
sheet1 = i
End If
Next
objWorkbook.WorkSheets(sheet1).Activate
'Get Last Row index in Sheet1
intRow = 4
Do Until objWorkbook.WorkSheets(sheet1).Cells(intRow, 4).Value = ""
intRow = intRow + 1
Loop
last_row = intRow
'Find HW Part number location
For j = 3 to last_row
If Instr(objWorkbook.WorkSheets(my).Cells(j, 4).Value, hw_part_number) > 0 Then
hw_reference_row = j
End If
Next
由于机密性政策,我不得不更改一些变量和注释。但这基本上是我在代码的其他部分使用的。
唯一的问题是,通过我正在处理的这个新工作表,我无法搜索最后一行,因为同一工作表中有多个表。如果由我决定,我会将表格分成不同的工作表。但它不取决于我。 :(
所以要找到" last_row"我曾经搜索过第一个空白区域,但由于有多个表格,因此它们之间存在空白空间并且不会起作用。暂时,我已经取代了
For j = 3 to last_row
与
For j = 3 to 800
暂时直到我找到一种搜索方式直到最后一行。表格不会相互干扰。这意味着我搜索了部件号,它将永远不会出现在同一列中较早的表中。所以我正在搜索所有内容,即使我知道它不会出现在前几百行中。
所以我的问题是,有没有办法只搜索工作表中的特定表格?并搜索该工作表中的每一行?
答案 0 :(得分:2)
Sub FindIt()
Dim partnumber As Integer
partnumber = 12345
Dim aCel As Range
Set aCell = Sheets(1).Range("YourTableName[ColumnHeadingName]").Find(What:=partnumber, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not aCell Is Nothing Then
MsgBox "Value Found in Cell " & aCell.Address
End If
End Sub