如果值不存在,请转到下一个电子表格

时间:2014-05-24 22:20:23

标签: excel vba excel-vba excel-2010

我正在尝试在Excel spreadsheets中搜索某些值。但有时元素可能不在spreadsheet中。

例如,如果我正在搜索原铜储量,我可能会在sheets 12但不是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

1 个答案:

答案 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中的代码。否则,它将继续到下一张表。