VBA阵列Vlookup

时间:2017-12-18 16:03:56

标签: arrays excel vba vlookup

我想直接从VBA编辑器创建一个vlookup(不是指单元格)。 我已经尝试过2D数组,但它不起作用。

Sub vl()
    Dim typ(1 To 5, 1 To 2) As Variant

    typ(1, 1) = A
    typ(2, 1) = B
    typ(3, 1) = C
    typ(4, 1) = D
    typ(5, 1) = E
    typ(1, 2) = 50
    typ(2, 2) = 40
    typ(3, 2) = 30
    typ(4, 2) = 20
    typ(5, 2) = 10

    MsgBox Application.WorksheetFunction.VLookup("A", typ, 2, 0)
End Sub

我希望能得到50分。

我知道这可以使用单元格范围完成,但希望在VBA编辑器中直接完成。

1 个答案:

答案 0 :(得分:2)

这是一个很好的例子,为什么你应该总是使用Option Explicit。您的代码有效,但由于您没有Option Explicit,因此VBEditor认为A是变量而不是String。因此,它不会在MessageBox上提供任何内容。

这可以按预期工作:

Option Explicit

Sub vl()
    Dim typ(1 To 5, 1 To 2) As Variant

    typ(1, 1) = "A"
    typ(2, 1) = "B"
    typ(3, 1) = "C"
    typ(4, 1) = "D"
    typ(5, 1) = "E"
    typ(1, 2) = 50
    typ(2, 2) = 40
    typ(3, 2) = 30
    typ(4, 2) = 20
    typ(5, 2) = 10
    MsgBox Application.WorksheetFunction.VLookup("A", typ, 2, 0)

End Sub

MSDN Option Explicit