在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
展开
 我来答
2724421
2012-03-21 · TA获得超过2493个赞
知道大有可为答主
回答量:1551
采纳率:71%
帮助的人:983万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lvrenrui
2012-03-21 · TA获得超过1467个赞
知道小有建树答主
回答量:549
采纳率:100%
帮助的人:568万
展开全部
If y >= 5 Then
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这两个变量了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
香格里拉稻草人
2012-03-21 · TA获得超过385个赞
知道小有建树答主
回答量:494
采纳率:66%
帮助的人:389万
展开全部
If y >= 5 Then j = 1 Else y = 0 后面的 END IF 也同时取消。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ryuginka
2012-03-21 · TA获得超过956个赞
知道小有建树答主
回答量:2839
采纳率:0%
帮助的人:766万
展开全部
vba有自带的四舍五入函数,干嘛不用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式