我正在尝试在Excel spreadsheets
中搜索某些值。但有时元素可能不在spreadsheet
中。
例如,如果我正在搜索原铜储量,我可能会在sheets 1
和2
但不是3
中找到它。
所以我写了这段代码:
q = 1
Case 2
find_Element = fin_Array(x)
For k = 3 To last_WS
With Sheets(k).Range("1:200")
sh_Name = Worksheets(k).Name
Set pointer_to_Element = .Find(find_Element, _
.Cells(.Cells.Count), xlValues, xlPart, xlByRows, _
xlNext, False)
If pointer_to_Element Is Nothing Or "" Then
find_Element = "Finished goods"
End If
Set pointer_to_Element = .Find(find_Element, _
.Cells(.Cells.Count), xlValues, xlPart, xlByRows, _
xlNext, False)
pointer_Int_Row = CInt(pointer_to_Element.Row)
Worksheets(k).Cells(pointer_Int_Row, lock_Array(k)).Copy
Worksheets("EXTRACTIONS").Range("B16").Offset(, q).PasteSpecial xlPasteValues
Worksheets("EXTRACTIONS").Range("B15").Offset(, q).Value = sh_Name
q = q + 1
End With
Question_1 :为什么总是在error
上线:
If pointer_to_Element is Nothing or "" then
问题_2 :我已Find
xlWhole
替换为xlPart
,但如果sheet
缺少该元素,我该如何处理}?
如何才能走到下一个sheet
?
|
我如何检查VBAish
是否有价值"土地和土地改良" Sheet
中不存在并转到下一个Sheet
? (最好不使用GoTo
)
答案 0 :(得分:1)
此
If pointer_to_Element Is Nothing Or "" Then
在语法上更正确
If pointer_to_Element Is Nothing Or pointer_to_Element = "" Then
但如果找不到任何内容,Range.Find
方法会返回 Nothing ,因此您只需要进行第一次检查:
If pointer_to_Element Is Nothing Then
对于问题的第二部分,您可以将所有剩余代码放在 Else 块中。也就是说,它只会在找到某些内容时执行Else中的代码。否则,它将继续到下一张表。