Word VBA Formfield数字格式

时间:2016-02-02 16:30:37

标签: vba ms-word

我正在创建一个表单,其中一个字段的输入用于在VBA中进行计算,以返回插入另一个文本字段中的值。我很高兴在这里。

问题是,处理Power数字往往会变得非常高,所以我的代码根据值将Watts分为Kilowatts或Megawatts。

如果将数字除以1,000到kW,我希望该字段的格式为"#。## 0,00 kW"。如果它被1,000,000除以兆瓦,则格式应为"#。## 0,00 MW"。

有关如何执行此操作的任何建议吗?

我的代码看起来像这样(前一部分无关紧要):

Dim Module As String, Power As Integer, Technology As String, TechLong As String, NumberOfCells As Integer

Module = ActiveDocument.FormFields("ModType").Result
Power = Mid(Module, 4, 3)
Technology = Mid(Module, 9, 1)
NumberOfCells = Mid(Module, 10, 2)

' Project information
Dim NumModules As Long, ProjectSize As Long, PowerField As FormField

NumModules = ActiveDocument.FormFields("ModNum").Result
ProjectSize = NumModules * Power

Set PowerField = ActiveDocument.FormFields("TotalPower")

If ProjectSize < 1000000 Then
    'Change W to kW
    PowerField.Result = ProjectSize / 1000
Else
    'Change W to MW
    PowerField.Result = ProjectSize / 1000000
End If

谢谢!

1 个答案:

答案 0 :(得分:1)

我的建议是将数字和电源标签分成两个单独的表单字段。取消激活&#34; Fillin已启用&#34;电源标签的属性,以便用户无法更改。

即使用户无法更改&#34;标签&#34;的内容,您的代码也可以。

此方法允许您单独保留电量字段的数字格式。使用您的代码更改数字格式设置意味着取消保护,然后重新保护表单文档。如果可能的话,最好避免这一步。

因此,假设电源标签的表单字段名为PowerLabel,您的代码可能如下所示:

PowerLabel = ActiveDocument.Formfields("PowerLabel")
If ProjectSize < 1000000 Then
    'Change W to kW
    PowerField.Result = ProjectSize / 1000
    PowerLabel.Result = "Kw"
Else
    'Change W to MW
    PowerField.Result = ProjectSize / 1000000
    PowerLabel.Result = "Mw"
End If