Поделиться через


Метод Application.ConvertResult (Visio)

Преобразует строку или число в эквивалентное число в разных единицах измерения.

Синтаксис

expression. ConvertResult (StringOrNumber, UnitsIn, UnitsOut)

выражение: переменная, представляющая объект Application.

Параметры

Имя Обязательный или необязательный Тип данных Описание
StringOrNumber Обязательный Variant Строка или число для преобразования; может быть строкой, числом с плавающей запятой или целым числом.
UnitsIn Обязательный Variant Единицы измерения для атрибута StringOrNumber.
UnitsOut Обязательный Variant Единицы измерения для выражения результата.

Возвращаемое значение

Двойное с плавающей точкой

Замечания

При передаче в виде строки StringOrNumber может быть формулой или потенциальной формулой ячейки или результатом или потенциальным результатом ячейки, выраженным в виде строки. Метод ConvertResult вычисляет строку и преобразует результат в единицы измерения, назначенные UnitsOut. Метод ConvertResult возвращает ошибку, если строка содержит ссылки на ячейки.

Возможные значения для StringOrNumber :

  • 1.7
  • 3
  • "2.5"
  • "4,1 см"
  • "12 футов - 17 дюймов + (12 см / SQRT(7))"

Аргументы UnitsIn и UnitsOut могут быть такими строками, как "inches", "inch", "in." или "i". Строки можно использовать для всех поддерживаемых единиц Microsoft Office Visio, таких как сантиметры, метры, мили и т. д. Можно также использовать любую константу единиц, объявленную библиотекой типов Visio в VisUnitCodes. Список допустимых единиц также указан в разделе Сведения о единицах измерения.

Если StringOrNumber является числом с плавающей запятой или целым числом, UnitsIn объявляет, какая единица измерения должна быть определена методом ConvertResult . Передайте "", чтобы указать внутренние единицы Visio.

Если StringOrNumber является строкой, UnitsIn указывает способ интерпретации вычисленного результата и используется только в том случае, если результат является скалярным. Например, выражение "4 * 5 см" имеет значение 20 см, что не является скалярным, поэтому 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 и обратная связь.