【问题标题】:Formatting number as current in word using vba使用vba将数字格式化为word中的当前数字
【发布时间】:2017-05-20 04:06:27
【问题描述】:

我正在使用 vba 代码生成从 excel 到 word 的报告,但我遇到了困难。我要复制的数字似乎没有 excel 的格式,我需要将其格式化为货币,即 1,000 美元或 5,212,345 美元,现在它只显示为 1000 和 5212345。

这是我的代码,我有一个方法或数据成员未找到错误。

.TypeText "Total Written Premium: " & ws4.Range("I" & LR12)
.Format (ws4.Range("I" & LR12) = "$#,##0.00_)")

【问题讨论】:

  • 我试过 ws4.Range("I" & LR12).NumberFormat = "$#,##0.00_);($#,##0.00)" 但没用。你是正确的,它在下面,但它之前有多行代码一直运行良好,所以这就是为什么我只发布我遇到的行。
  • 错误是发生在.TypeText还是.Format指令上?
  • 至于隐含的With 块,您可能需要阅读minimal reproducible example
  • (a) 变量LR12 的值是多少? (b) 这段代码所指的With 块对象是什么? (c) 我认为我遇到的任何对象的 Format 属性都没有使用 True/False 参数,所以我怀疑将 Format 属性设置为 (ws4.Range("I" & LR12) = "$#,##0.00_)") 是否有意义。 (d) 请按照@Mat'sMug 的建议发布 MCVE

标签: vba excel ms-word


【解决方案1】:
.TypeText "Total Written Premium: " & ws4.Range("I" & LR12)

您正在隐式获取RangeValue。这会更明确:

.TypeText "Total Written Premium: " & ws4.Range("I" & LR12).Value

单元格的 没有任何格式。它不是底层价值的表示,它是价值本身

如果单元格已经格式化为货币,那么您需要获取它的Text

.TypeText "Total Written Premium: " & ws4.Range("I" & LR12).Text

【讨论】:

  • 在 excel 中所有内容都已格式化,但是当我使用 vba 代码传输数字时,格式会丢失。
  • 是的,这正是这个答案所说的。因为您正在阅读单元格的Value(隐式)。改为阅读单元格的Text
猜你喜欢
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2021-09-04
  • 2021-01-27
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
相关资源
最近更新 更多