(Visio) 的 Application.ConvertResult 方法

會將字串或數字轉換成以不同度量單位表示的相等數字。

語法

運算式ConvertResult (StringOrNumberUnitsInUnitsOut)

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

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 支援與意見反應