2016-02-02 82 views
0

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

问题是,处理电源数量往往会相当高,所以我的代码根据值将瓦数分成千瓦或兆瓦。

如果数字除以1000为千瓦,我希望字段格式为“#。## 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

我的建议是将数字和电源标签分成两个单独的表单域。关闭电源标签的“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 
+0

这就是天才!非常感谢...有时候简单会更好:-) –

+0

不客气!请花点时间记住点击“答案”旁边的复选标记,以便让人们知道建议解决了您的问题:-) –