VBA单元搜索给我运行时间13

标签 vba excel

我在搜索单元格值方面遇到问题。
我想在事件工作表的范围内搜索值“United Kingdom”,并使用 VLOOKUP 函数返回给定值。

Sub UpdateGDP()

Dim rng As Range, cell_search As Range, del As Range, GDP As Range

Set GDP = Worksheets("GDP").Range("A5:C250")
Set rng = Intersect(Range("B:B"), Activesheet.UsedRange)

For Each cell_search In rng
    If (cell_search.Value) = "United Kingdom" Then
        If del Is Nothing Then
            Set del = cell_search
        Else: Set del = Union(del, cell_search)
        End If
    End If
Next cell_search

On Error Resume Next
del.Formula = "=VLOOKUP(United Kingdom,GDP,4,FALSE)"

End Sub

它给了我以下错误,我根本无法让它工作:

Run-time Error 13 - Type Mismatch


Sub UpdateGDP()



    Dim rng As Range, cell_search As Range, del As Range, GDP As Range
    Set GDP = Worksheets("GDP").Range("A5:C250", rng.Addres(external:=True))
    Set rng = Intersect(Range("B:B"), ActiveSheeet.UsedRange)


    For Each cell_search In rng.Cells
        If (cell_search.Value) = "United Kingdom" Then
            If del Is Nothing Then
                Set del = cell_search
            Else: Set del = Union(del, cell_search)
            End If
        End If
    Next cell_search
    del.Formula = "=VLOOKUP(""United Kingdom"",GDP,4,FALSE)"
    End Sub

Run-time error 91

最佳答案

不需要del范围,直接应用公式即可:

Sub UpdateGDP()
    Dim rng As Range, cell_search As Range, GDP As Range

    Set GDP = ThisWorkbook.Worksheets("GDP").Range("A5:C250")
    With ThisWorkbook.Worksheets("Sheet1") 'relevant sheet name
        Set rng = Intersect(.Range("B:B"), .UsedRange)
    End With

    For Each cell_search In rng
        If cell_search.Value = "United Kingdom" Then
            cell_search.Formula = "=VLOOKUP(""United Kingdom"",GDP!" & GDP.Address & ",3,0)"
        End If
    Next cell_search
End Sub

笔记:
  • 您的 VLOOKUP 未正确应用,它还有 col_index_num参数值4当您的 table array 中只有三列时.我将其更改为 3 - 你需要检查!
  • 最好避开On Error Resume Next .你需要找到错误并处理它,而不是隐藏它。
  • 你原来在哪里Set rng你没有完全定义你的范围。这可能会引发错误。
  • 关于VBA单元搜索给我运行时间13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42784365/

    相关文章:

    vba - 如何在 Excel VBA 中的子例程之间传递范围变量

    excel - 如何每隔一分钟/10 秒保存所有 Excel 文件?

    html - 单击 VBA 中图像的第二个按钮

    vba - Concat 宏不起作用,编码错误

    vba - 如何在Word的VBA中使用COM?

    excel - 如何从数据长度等于或大于 9 个字符的单元格中删除数据?

    excel - 在 22 年 6 月 IE 11 生命周期结束后,VBA 的 Internet 控制功能会起作用吗?

    java - 如何从 Excel VBA 运行 Java Eclipse?

    vba - Excel按代号取消隐藏工作表

    java - MY-SQL查询导出excel文件中的数据