Application.ConvertResult 方法 (Visio)
将字符串或数字转换为以不同度量单位表示的等效数字。
语法
表达式。ConvertResult (StringOrNumber、 UnitsIn、 UnitsOut)
expression:表示 Application 对象的变量。
参数
名称 | 必需/可选 | 数据类型 | 说明 |
---|---|---|---|
StringOrNumber | 必需 | Variant | 要转换的字符串或数字;可以是字符串、浮点数或整数。 |
UnitsIn | 必需 | Variant | StringOrNumber 的度量单位。 |
UnitsOut | 必需 | Variant | 表示结果使用的度量单位。 |
返回值
Double
备注
如果以字符串形式传递,StringOrNumber 可能是单元格的公式或预期公式,或者是以字符串形式表示的单元格的结果或预期结果。 ConvertResult 方法对字符串进行计算并将结果转换成由 UnitsOut 指定的单位。 如果字符串包含任何单元格引用,则 ConvertResult 方法返回一个错误。
StringOrNumber 的可能值包括:
- 1.7
- 3
- "2.5"
- "4.1 cm"
- "12 ft - 17 in + (12 cm / SQRT(7))"
UnitsIn 和 UnitsOut 参数可以是字符串,如“inches”、“inch”、“in.”或“i”。 字符串可以用于所有受支持的 Microsoft Office Visio 单位,如厘米、米、英里等。 也可以使用由 Visio 类型库在 VisUnitCodes 中声明的任意单位常量。 关于度量单位中还列出了有效 单位的列表。
如果 StringOrNumber 是浮点数或整数,则 UnitsIn 声明 ConvertResult 方法应该将数字解释为哪种度量单位。 传递 "" 将指示 Visio 内部单位。
如果 StringOrNumber 是字符串,则 UnitsIn 指定如何解释计算结果,而且只有在结果为标量时才使用它。 例如,表达式“4 * 5 cm”的计算结果为 20 cm,结果不是标量,因此忽略 UnitsIn。 表达式“4 * 5”的计算结果为 20,这是一个标量,并使用指定的 UnitsIn 进行解释。
UnitsOut 参数指定应以哪种单位来表示返回的数字。 如果希望结果与计算的表达式使用相同的单位来表示,则传递“NOCAST”或 visNoCast。
指定字符串的示例:
Debug.Print vsoApplication.ConvertResult("0.5 * 2", "ft", "ft") >>> 1.0
Debug.Print vsoApplication.ConvertResult("0.5 * 2", "ft", "in") >>> 12.0
Debug.Print vsoApplication.ConvertResult("1 cm", "ft", "in") >>> 0.39
Debug.Print vsoApplication.ConvertResult("1 cm", "ft", "NOCAST") >>> 1.0
Debug.Print vsoApplication.ConvertResult("1 cm", "ft", "") >>> 0.39
Debug.Print vsoApplication.ConvertResult("1 cm", "ft", "bz") >>> exception: Bad measurement unit.
指定数字的示例:
Debug.Print vsoApplication.ConvertResult(1, "ft", "ft") >>> 1
Debug.Print vsoApplication.ConvertResult(1, "ft", "in") >>> 12
Debug.Print vsoApplication.ConvertResult(1.0, "in", "ft") >>> 8.33333333333333E-02
Debug.Print vsoApplication.ConvertResult(1.0, visFeet, "") >>> 12
Debug.Print vsoApplication.ConvertResult(1, "bz", "in") >>> exception: Bad measurement unit.
示例
以下宏显示如何使用 ConvertResult 方法分别以厘米、英尺、码和英里为单位报告两个形状之间的距离。 要运行此宏,必须在页面上选中两个形状。
Sub ConvertResult_Example()
Dim vsoApplication As Visio.Application
Dim vsoWindow As Visio.Window
Dim vsoSelection As Visio.Selection
Dim vsoShape1 As Visio.Shape
Dim vsoShape2 As Visio.Shape
Dim dblPinX1 As Double
Dim dblPinY1 As Double
Dim dblPinX2 As Double
Dim dblPinY2 As Double
Dim dblPinX1in As Double
Dim dblPinY1in As Double
Dim dblPinX2in As Double
Dim dblPinY2in As Double
Dim lngCount As Long
Dim dblDistance As Double
Dim dblDistanceX As Double
Dim dblDistanceY As Double
Dim dblResult(4) As Double
Dim strUnit As String
Set vsoApplication = Visio.Application
Set vsoWindow = vsoApplication.ActiveWindow
'Drawing page must be active window
If vsoWindow.Type = 1 Then
Set vsoSelection = vsoWindow.Selection
lngCount = vsoSelection.Count
'Exactly two shapes should be selected
If lngCount <> 2 Then
MsgBox "A total of " & lngCount & " shapes are " _
& "selected. Please select two shapes and try " _
& "again", 0
Else
Set vsoShape1 = vsoSelection.Item(1)
Set vsoShape2 = vsoSelection.Item(2)
'Pass the Visio Automation constant for inches (visInches, which is defined as 65) to the Result method to force units to inches
dblPinX1in = vsoShape1.Cells("PinX").Result(65)
dblPinY1in = vsoShape1.Cells("PinY").Result(65)
dblPinX2in = vsoShape2.Cells("PinX").Result(65)
dblPinY2in = vsoShape2.Cells("PinY").Result(65)
dblDistance = Sqr((dblPinX2in - dblPinX1in) ^ 2 + _
(dblPinY2in - dblPinY1in) ^ 2)
'Convert distances from inches to centimeters, feet, yards, and miles
dblResult(1) = vsoApplication.ConvertResult(dblDistance, "in", "cm")
dblResult(2) = vsoApplication.ConvertResult(dblDistance, "in", "ft")
dblResult(3) = vsoApplication.ConvertResult(dblDistance, "in", "yd")
dblResult(4) = vsoApplication.ConvertResult(dblDistance, "in", "mi")
'Display results
MsgBox dblResult(1) & " centimeters; " & dblResult(2) & " feet; " & _
dblResult(3) & " ;yards; " & dblResult(4) & " miles ", 0
End If
Else
MsgBox "The drawing page must be active.", 0
End If
End Sub
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。