VBA如果其他循环在Excel中返回#VALUE
大家好,新的在Excel中使用VBA,并试图创build一个函数,看看一个数字,并返回一个六位数的数字。
我写的function是试图完成这个function,但是当我在单元格中使用命令= Res(A1)时,我只是得到一个#VALUE! 作为答案。
目前第一单元中的值是30508。
任何人可以提供帮助解决这个问题将不胜感激。 多谢你们。
Function Res(myval As Integer) As Integer Res = 0 If ((myval > 0) And (myval < 10)) Then Res = myval * 100000 ElseIf ((myval > 9) And (myval < 100)) Then Res = myval * 10000 ElseIf ((myval > 99) And (myval < 1000)) Then Res = myval * 1000 ElseIf ((myval > 999) And (myval < 10000)) Then Res = myval * 100 ElseIf ((myval > 9999) And (myval < 100000)) Then Res = myval * 10 ElseIf ((myval > 999999) And (myval < 10000000)) Then Res = myval / 10 Else Res = myval End If End Function
将Function Res(myval As Integer) As Integer
更改为:
Function Res(myval As Long) As Long
你正在达到整数的最大值。
Long代表长整数,你想在任何时候使用它,你的数字可以超过30k。
你需要使用long而不是整数
整数只涵盖从-32,768到32,767
长期覆盖-2,147,483,648到2,147,483,647
Function Res(myval As Long) As Long Res = 0 If ((myval > 0) And (myval < 10)) Then Res = myval * 100000 ElseIf ((myval > 9) And (myval < 100)) Then Res = myval * 10000 ElseIf ((myval > 99) And (myval < 1000)) Then Res = myval * 1000 ElseIf ((myval > 999) And (myval < 10000)) Then Res = myval * 100 ElseIf ((myval > 9999) And (myval < 100000)) Then Res = myval * 10 ElseIf ((myval > 999999) And (myval < 10000000)) Then Res = myval / 10 Else Res = myval End If End Function
Function Res(myVal as long) As Long Res = myVal * 10 ^ ( 6 - Len(Cstr(myVal)) ) End Function
请注意 – 这仍然存在与原始方法相同的问题:
如果myVal是9999999(7位),那么myVal / 10是999999.9和Clng(999999.9)是10000000(还有七位数)