(Visio) 的 Application.ConvertResult 方法
會將字串或數字轉換成以不同度量單位表示的相等數字。
語法
運算式。ConvertResult (StringOrNumber、 UnitsIn、 UnitsOut)
expression 代表 Application 物件的變數。
參數
名稱 | 必要/選用 | 資料類型 | 描述 |
---|---|---|---|
StringOrNumber | 必要 | Variant | 要轉換的字串或數字;可以是字串、浮點數或整數。 |
UnitsIn | 必要 | Variant | 歸類至 StringOrNumber 所用的度量單位。 |
UnitsOut | 必要 | Variant | 表示結果所用的度量單位。 |
傳回值
雙精度浮點數
註解
如果是以字串的形式傳遞,則 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 支援與意見反應。