【问题标题】:Word VBA Formfield number formatWord VBA Formfield 数字格式
【发布时间】:2016-02-02 16:30:37
【问题描述】:

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

问题是,处理功率数字往往会变得相当高,因此我的代码根据值将瓦特分为千瓦或兆瓦。

如果将数字除以 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

谢谢!

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    我的建议是将数字和电源标签分成两个单独的表单字段。停用电源标签的“Fillin enabled”属性,以便用户无法更改它。

    即使用户不能改变“标签”的内容,你的代码可以。

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

    因此,假设电源标签的表单字段名为 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
    

    【讨论】:

    • 真是天才!谢谢一百万...有时简单更好:-)
    • 不客气!请花点时间记住单击“答案”旁边的复选标记,以便让人们知道该建议解决了您的问题:-)
    猜你喜欢
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    相关资源
    最近更新 更多