Application.VLookup格式

时间:2015-08-13 13:55:47

标签: excel vba excel-vba

在VBA中遇到Application.VlookUp问题。

我正在运行以下代码以尝试获得等效性

@interface MyCell : UITableViewCell
@end

@implementation MyCell

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    return [super initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuseIdentifier];
}

@end

hd是一个递增变量

当我运行它时,程序应该检查等效表,如果在A列中找到值“hh”,那么它应该返回D列中的值。然后程序检查“hi”中的值是否为等于VLookUp返回的值。

但是,当我运行程序时,我收到以下错误:

  

运行时错误:13类型不匹配

我试图将“hi”的DIM更改为String,Long和Integer,但没有运气。 “hh”的值可以是字母,数字或组合,而“hi”将始终是数字。

编辑:

在对文件稍微摆弄之后,当VLookUp在等效表的A列中找不到“hh”的值时,错误现在似乎才会出现

1 个答案:

答案 0 :(得分:3)

如果VLOOKUP找不到该值并返回错误,则执行以下命令:

hi = Application.VLookup(hh, Worksheets("Equivalency Table").Range("A1:D20"), 2, False)

尝试将原始值与错误值进行比较,这会导致运行时错误13:类型不匹配

为了避免这个问题,我建议你引入另一个变量VLookupResult。首先将结果ot VLOOKUP函数分配到此变量中,然后再将其与hi进行比较,检查它是否为错误。

以下是包含这些更改的代码:

Sub x()
    Dim hh As Variant
    Dim hi As Variant
    Dim VLookupResult As Variant

    hh = Range("A" & hd)
    hi = Range("B" & hd)
    VLookupResult = Application.VLookup(hh, Worksheets("Equivalency Table").Range("A1:D20"), 2, False)

    If IsError(h1) Then
        Range("A" & hd & ":B" & hd).Select
        Selection.Style = "Bad"
    ElseIf hi = VLookupResult Then
        Range("A" & hd & ":B" & hd).Select
        Selection.Style = "Good"
        hf = hf + 1
    End If

End Sub