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(还有七位数)