【发布时间】:2015-11-10 11:19:29
【问题描述】:
我在下面的代码中使用了 vlookup,但它导致了类型不匹配。我已经改变了所有的惯例,使变量变体,将其更改为应用程序而不是工作表函数,但我仍然得到错误。请问谁能看出我做错了什么?
Sub createSQL()
Dim Br As Range
Dim Branch As Variant
Dim Rep As Range
Dim Report As Variant
Dim RowNo As Long
Dim SQLCode As Range
Dim SQLCode2 As String
Dim SQLCode3 As String
Dim BranchID As Long
Dim Exception As String
Dim ExCode As Variant
Set Br = Sheets("sheet3").Range("D2:D5")
SQLCode3 = Sheets("Issues").Range("F2")
SQLCode2 = Sheets("Issues").Range("F3")
For Each Branch In Br
RowNo = Branch.Row
Set SQLCode = Sheets("Sheet3").Range("L" & RowNo)
BranchID = Sheets("Sheet3").Range("C" & RowNo)
SQLCode = SQLCode3 & BranchID & SQLCode2
Set Rep = Sheets("Sheet3").Range("I" & RowNo & ":K" & RowNo).Columns
For Each Report In Rep
If Report <> "" Then
SQLCode = SQLCode & Report
Else
SQLCode = ""
End If
ExCode = Sheets("Sheet3").Range("C" & RowNo) & Sheets("Sheet3").Range("D" & RowNo) & Cells(1, Report.Column)
Exception = Application.VLookup(ExCode, Sheets("Exceptions").Range("D2:E2"), 2, False)
SQLCode = SQLCode & Exception & " Union All "
Next Report
SQLCode = Left(SQLCode, Len(SQLCode) - 10)
Next Branch
End Sub
【问题讨论】:
-
ExCode的值是多少? -
它将类似于这样的东西; 0R V WallisZero 委员会
-
您的
Exception变量是一个字符串。Application.VLookup不一定会作为字符串返回,例如,如果出现错误(即不匹配),它将返回Error对象。您可以使用VarType检查对象的类型Application.VLookup正在返回并正确处理,或者将Exception设置为 Variant。 -
第一个问题是它应该是
Application.WorksheetFunction.VLookup。什么类型的数据(不是变量类型)是 ExCode 和你放在 Exception 中的 Vlookup 的结果?如果您将两者都设置为字符串,它可能会起作用! ;)