
在EXcel中用VBA写的以下四舍五入小程序,请高手看看为什么在EXcel中调用该函数没有运行出我要的结果 5
PublicFunctionsslr(x,n)Dimx,y1,y2,i,jAsStringDimp,nAsIntegerx=Str(x*10^n)p=InStr(x,"....
Public Function sslr(x, n)
Dim x, y1, y2, i, j As String
Dim p, n As Integer
x = Str(x * 10 ^ n)
p = InStr(x, ".")
y = Val(Mid(x, p + 1, 1))
If y >= 5 Then
j = 1
Else: y = 0
End If
x = Val(Left(x, p - 1)) + j
sslr = x / 10 ^ n
End Function 展开
Dim x, y1, y2, i, j As String
Dim p, n As Integer
x = Str(x * 10 ^ n)
p = InStr(x, ".")
y = Val(Mid(x, p + 1, 1))
If y >= 5 Then
j = 1
Else: y = 0
End If
x = Val(Left(x, p - 1)) + j
sslr = x / 10 ^ n
End Function 展开
4个回答
展开全部
Public Function sslr(Num, n)
你的代码中有几个问题.
1.你声明的变量跟函数传递的参数变量名称重复了.
2.变量 J 应该是声明为数字变量
正确的代码如下 你自己对比一下
Dim x, y1, y2, i As String
Dim p, j As Integer
x = Str(Num * 10 ^ n)
p = InStr(x, ".")
y = Val(Mid(x, p + 1, 1))
If y >= 5 Then
j = 1
Else: y = 0
End If
x = Val(Left(x, p - 1)) + j
sslr = x / 10 ^ n
End Function
你的代码中有几个问题.
1.你声明的变量跟函数传递的参数变量名称重复了.
2.变量 J 应该是声明为数字变量
正确的代码如下 你自己对比一下
Dim x, y1, y2, i As String
Dim p, j As Integer
x = Str(Num * 10 ^ n)
p = InStr(x, ".")
y = Val(Mid(x, p + 1, 1))
If y >= 5 Then
j = 1
Else: y = 0
End If
x = Val(Left(x, p - 1)) + j
sslr = x / 10 ^ n
End Function
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
If y >= 5 Then
j = 1
Else: y = 0
End If
这里else的时候,应该让j等于0
j = 1
Else: y = 0
End If
这里else的时候,应该让j等于0
追问
没用,在EXcel里面运用这个函数会出现#NAME?
追答
声明的时候:
Public Function sslr(byval x as double, byval n as integer)
然后在程序里不要再重复声明x和n这两个变量了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
If y >= 5 Then j = 1 Else y = 0 后面的 END IF 也同时取消。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
vba有自带的四舍五入函数,干嘛不用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询