我一直在努力弄清楚这里出了什么问题。我有两个cols包含字符串值。我使用第三个col在工作表中调用UDF,但最终得到错误的#Value - “公式中使用的值是错误的数据类型”。
例如:
Col I Col J
File1 Y
File1 N
File2 Y
File3 N
我尝试调试它,输入值很好地传递给函数变量。 我对VBA的了解有限,希望你们能帮助我解决这个问题。
在工作表中调用的函数:
=FileCheck(I3,I3:J38)
代码:
Public Function FileCheck(V As Range, Q As Range) As String
Dim vtest As Variant
Dim i, j, stat As Integer
stat = 0
vtest = Q
For i = 1 To UBound(vtest)
If V = vtest(i, 1) And vtest(i, 2) = "N" Then
For j = 1 To UBound(vtest)
If V = vtest(j, 1) And vtest(j, 2) = "Y" Then
FileCheck = "Y"
stat = 1
End If
Next
If stat = 0 Then
FileCheck = "N"
End
Else: End
End If
ElseIf V = vtest(i, 1) And vtest(i, 2) = "Y" Then
FileCheck = "Y"
End If
Next
End Function
答案 0 :(得分:4)
您收到该错误是因为您使用的是End
。
如果要关闭计算机,是否单击Start Menu ~~> Shut down
或直接拔出电源线? : - )
使用End
与拉电缆非常相似。不要使用End
。正常退出该功能。 End
语句基本上是一种使程序崩溃的方法,但没有显示任何错误消息。
试试这个。替换这些行
If stat = 0 Then
FileCheck = "N"
End
Else: End
End If
与
If stat = 0 Then FileCheck = "N"
Exit Function
修改强>
顺便说一句,您是否想在Col I
中找到Col J
的相应值?如果是,那么您不需要UDF。您可以使用Vlookup()
使用此公式=VLOOKUP(I3,I3:J38,2,0)
代替=FileCheck(I3,I3:J38)
答案 1 :(得分:1)
我认为您的第一个输入类型应该是字符串而不是范围:
V as string
如果你想结束这个功能,你需要使用exit function
但是我不确定你是否要结束这个功能,结束if语句或for循环?