我正在创建一个表单,其中一个字段的输入用于在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
谢谢!
答案 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