执行VBA函数时Excel错误#值
我构建了一个简单的函数来从字符串中收集一些值。示例字符串为“abc(1.1);abc(1.2);bac(1.3)”。目标是获取值,并最终将其相加,然后返回结果。Msgbox关于“valor”(总和)的功能非常强大,并且显示了正确的值。但是当使用这个函数时,我在单元格上得到和#值错误。你能帮我理解为什么吗执行VBA函数时Excel错误#值,excel,vba,Excel,Vba,我构建了一个简单的函数来从字符串中收集一些值。示例字符串为“abc(1.1);abc(1.2);bac(1.3)”。目标是获取值,并最终将其相加,然后返回结果。Msgbox关于“valor”(总和)的功能非常强大,并且显示了正确的值。但是当使用这个函数时,我在单元格上得到和#值错误。你能帮我理解为什么吗 Function Organize(CellRef As String) As Double Dim i As Integer Dim lentotal As Long Dim inicio
Function Organize(CellRef As String) As Double
Dim i As Integer
Dim lentotal As Long
Dim inicio As Long
Dim fim As Long
Dim a As Long
Dim valor As Double
Dim check As String
a = 1
x = CellRef
lentotal = Len(x)
i = Len(x) - Len(Replace(x, ";", ""))
Dim tech(1 To 100) As Double
Do While a <= i + 1
inicio = InStr(x, "(")
fim = InStr(x, ")")
'MsgBox Replace((Mid(x, inicio + 1, fim - inicio - 1)), ".", ",")
tech(a) = Replace((Mid(x, inicio + 1, fim - inicio - 1)), ".", ",")
If Left(x, 4) = "ABC" Then
valor = valor + tech(a)
End If
If a > i Then
MsgBox valor
Organize = valor
End
Else
x = Right(x, Len(x) - fim - 1)
End If
a = a + 1
Loop
End Function
函数组织(CellRef作为字符串)为双精度
作为整数的Dim i
总长度等于
像长一样暗淡
只要
暗淡如长
黯淡的勇气
作为字符串的Dim check
a=1
x=CellRef
lentotal=Len(x)
i=Len(x)-Len(替换(x,“;”,“”)
Dim tech(1至100)为双精度
做一个尝试使用退出函数
而不是结束尝试使用退出函数
而不是结束我认为你需要改变一些事情,至少在这个例子中:如果LCase(左(x,3))=“abc”,那么
,因为你比较的是小写字符串,只有3个字符,并删除结尾
。感谢@JvdV的回复。所有这些循环都运行良好,因为“MsgBox valor”给了我正确的值(我刚刚以worte ABC为例)。“结束”是在那里停止循环。end
可能应该是Exit Function
。是的,end
终止整个VBA过程。你几乎不需要使用它。FWIW自定义项也不应该弹出任何MsgBox
。我认为你需要改变一些事情,至少在这个例子中:如果LCase(Left(x,3))=“abc”,那么
,因为你比较了小写字符串和仅3个字符,并删除了结尾。谢谢@JvdV的回复。所有这些循环都运行良好,因为“MsgBox valor”给了我正确的值(我刚刚以worte ABC为例)。“结束”是在那里停止循环。end
可能应该是Exit Function
。是的,end
终止整个VBA过程。您几乎不需要使用它。FWIW自定义项也不应该弹出任何MsgBox
。