【问题标题】:using excel vba to autocalculate some cells. Cell formatting of 2 decimal places is overwritten使用 excel vba 自动计算一些单元格。 2 位小数的单元格格式被覆盖
【发布时间】:2016-12-15 09:41:29
【问题描述】:

我有格式为 0.00% 的单元格。当用户输入时,它的格式很好但是如果一个单元格是由在 vba 中完成的计算填充的,它不会限制为 2 位小数,而是像 33.3333333333。有没有办法让它符合单元格的格式?谢谢。 cgeddes

B5因首付变化而改变

    Case "$D$5" ' Downpayment Entered
        Me.Unprotect
        range("B5") = (range("D5").Value / range("D4").Value) * 100
        Debug.Print "Percent " & range("B5").Value
        range("D6").Value = (range("D4").Value - range("D5").Value)
          If range("D21") <> 0 Then
       MsgBox "The Total Mortgaged Amount has changed, The Mortgage Payment Amount (Cell D21) is no longer valid. Please Re-calculate Mortgage with New Amount"
       End If

B5 上的格式为 0.00##\% 当用户输入时显示为 5.00% 或 10.00%,无论他们输入什么。

嗯。也许##意味着什么?? 感谢蒂姆今天再次帮助你。

【问题讨论】:

  • 究竟是如何填充单元格的?显示您的代码总是有助于回答问题。
  • 这可能与 如何 vba 代码由于使用不同的单元格属性而更改单元格值有关。看看:stackoverflow.com/questions/17359835/…
  • # 用于显示非零数字。数字格式不会影响实际的单元格值,而只会影响它的显示方式。如果要获取格式化值而不是实际单元格值,可以使用 .Text 而不是 .Value
  • user1274820 - 我现在才看到这个。为什么之前看不到?好吧,也许我要瞎了,没看到。再次感谢您的精彩回答

标签: vba excel


【解决方案1】:

正如我在评论中所说,如果您想更改数字格式,请使用:

range("B5").NumberFormat = "0.00\%"
range("B5") = (range("D5").Value / range("D4").Value) * 100

如果你想对数字进行四舍五入,请使用

range("B5") = Round((range("D5").Value / range("D4").Value) * 100,2)

Round的参数为:Round(Number, [Decimal Places])

【讨论】:

  • User1274820,很抱歉,我没有看到您的原始评论。我还是没有。我使用了你的解决方案,效果很好。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-09
相关资源
最近更新 更多