VBA UDF Excel 2010 #VALUE

我已经阅读了有关UDF #VALUE错误的线程,似乎要么我不知道有关VBA能够使用它们,要么我遇到的问题是不一样的。

无论哪种方式,我试图做一个UDF来计算YY:MM格式的一个年龄的月数,根据我创build的公式做了相同的。

Function TOTALMONTHS(YearsMonths As String) Colonz = WorksheetFunction.Find(":", YearsMonths) Yearz = Left(YearsMonths, Colonz - 1) Monthz = Mid(YearsMonths, Colonz + 1, Lengthz - Colonz) Lengthz = Len(YearsMonths) TOTALMONTHS = Yearz * 12 + Monthz End Function 

上述代码在Excel 2010中实现时返回#VALUE错误。

任何协助我犯了什么错误将不胜感激!

谢谢!

编辑:

我试图和一个If块来迎合包含“>”在一开始的年龄。 例如,8:6和> 8:6。 我想我可能会在开始的search结果1上得到误报,但不知道为什么。

 Function TOTALMONTHS(YearsMonths As String) As Integer If WorksheetFunction.Search(">", YearsMonths) = 1 Then Greaterz = 2 Else Greaterz = 1 End If Colonz = WorksheetFunction.Find(":", YearsMonths) Yearz = Mid(YearsMonths, Greaterz, Colonz - Greaterz) monthz = Right(YearsMonths, Len(YearsMonths) - Colonz) TOTALMONTHS = Yearz * 12 + monthz End Function 

我不知道如何做“如果”位,也不知道如何把代码放在下面的评论…先谢谢了!

解决使用下面的答案 – 非常感谢你!

这是允许“:”或“。”的最终代码。 分隔符和“>”符号:

 Function TOTALMONTHS(YearsMonths As String) As Integer Dim Colonz As Integer, Yearz As Integer, monthz As Integer, Greaterz As Integer ' check if the stings consists of ">" sign If InStr(YearsMonths, ">") >= 1 Then Greaterz = 2 Else Greaterz = 1 End If ' check position of ":" or "." sign If InStr(YearsMonths, ":") >= 1 Then Colonz = InStr(YearsMonths, ":") Else Colonz = InStr(YearsMonths, ".") End If Yearz = Mid(YearsMonths, Greaterz, Colonz - Greaterz) monthz = Right(YearsMonths, Len(YearsMonths) - Colonz) TOTALMONTHS = Yearz * 12 + monthz End Function 

尝试下面更新的UDF代码:

 Function TOTALMONTHS(YearsMonths As String) As Integer Dim Colonz As Integer, Yearz As Integer, monthz As Integer, Greaterz As Integer ' check if the stings consists of ">" sign If InStr(YearsMonths, ">") >= 1 Then Greaterz = 2 Else Greaterz = 1 End If ' check position of ":" sign Colonz = InStr(YearsMonths, ":") Yearz = Mid(YearsMonths, Greaterz, Colonz - Greaterz) monthz = Right(YearsMonths, Len(YearsMonths) - Colonz) TOTALMONTHS = Yearz * 12 + monthz End Function 

下面你可以find我testing这个UDF代码的数据样本:

(请记住,B和E列中的单元格需要格式化为文本)

在这里输入图像说明