Application.ConvertResult 方法 (Visio)

将字符串或数字转换为以不同度量单位表示的等效数字。

语法

表达式ConvertResult (StringOrNumberUnitsInUnitsOut)

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))"

UnitsInUnitsOut 参数可以是字符串,如“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 支持和反馈,获取有关如何接收支持和提供反馈的指南。