【发布时间】:2020-04-08 23:05:33
【问题描述】:
我正在为我的销售团队设置定价工具,我的老板希望在我将值从美元转换为另一种货币后,将值四舍五入到最接近的千位(即 1000)。我使用下面的第一行代码将单元格的格式设置为 GBP(英镑),然后使用第二行代码将该单元格中的当前金额(即 .value)与我的货币换算相乘在单元格 4,11 中。
当前有效的代码,但给出了非四舍五入的结果(4,235 英镑):
Cells(arr(rowcnt), ChkCol5).NumberFormat = "[$£-en-GB]#,##0"
Cells(arr(rowcnt), ChkCol5).Value = Cells(arr(rowcnt), ChkCol5).Value * Cells(4, 11)
当我将“round”函数添加到第 2 行时,我得到一个
“运行时错误 5:无效的过程调用或语句。”
Cells(arr(rowcnt), ChkCol5).Value = **Round**(Cells(arr(rowcnt), ChkCol5).Value * Cells(4, 11)**, -3)**
当我使用 3 而不是 -3 时,它不会出错,但似乎也没有做任何事情。当然,我的价值观都是整数,所以这可能就是原因。但奇怪的是,我在使用 3 时没有得到错误舍入,但使用 -3 时会出现错误。
有什么想法吗??
谢谢!
【问题讨论】:
-
与工作表函数
ROUND不同,VBARound函数不接受负数作为第二个参数。因此,您的错误。 -
非常感谢。这解决了我的问题!你太棒了!