在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”的值时,错误现在似乎才会出现
答案 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