Compartir a través de


Método Application.ConvertResult (Visio)

Convierte una cadena o un número en un número equivalente en otras unidades de medida.

Sintaxis

expresión. ConvertResult (StringOrNumber, UnitsIn, UnitsOut)

expresión Variable que representa un objeto Application.

Parámetros

Nombre Obligatorio/opcional Tipo de datos Descripción
StringOrNumber Obligatorio Variant Cadena o número que se va a convertir; puede ser una cadena, un número de punto flotante o un entero.
UnitsIn Obligatorio Variant Unidades de medida en que se supone que está StringOrNumber.
UnitsOut Obligatorio Variant Unidades de medida en las que se expresará el resultado.

Valor devuelto

Doble

Comentarios

Si se pasa como cadena, StringOrNumber puede ser la fórmula o la posible fórmula de una celda, o el resultado o el posible resultado de una celda expresado en forma de cadena. El método ConvertResult evalúa la cadena y convierte el resultado en las unidades especificadas mediante UnitsOut. El método ConvertResult devuelve un error si la cadena contiene referencias a celdas.

Algunos valores posibles para StringOrNumber son:

  • 1.7
  • 3
  • "2.5"
  • "4,1 cm"
  • "12 pies - 17 pda + (12 cm / SQRT(7))"

Los argumentos UnitsIn y UnitsOut pueden ser cadenas como "pulgadas", "pulgada", "in", o "i". Las cadenas se pueden usar para todas las unidades admitidas de Microsoft Office Visio, como centímetros, metros, millas, etc. También puede usar cualquiera de las constantes de unidades declaradas por la biblioteca de tipos de Visio en VisUnitCodes. También se muestra una lista de unidades válidas en Acerca de las unidades de medida.

Si StringOrNumber es un número de punto flotante o un entero, UnitsIn indica la unidad de medida en la que deberá expresarse el número creado por el método ConvertResult. Pase "" para indicar unidades de Visio internas.

Si StringOrNumber es una cadena, UnitsIn especifica cómo interpretar el resultado y sólo se usará si dicho resultado es un escalar. Por ejemplo, la expresión "4 * 5 cm" da como resultado 20 cm, que no es un escalar, por lo que UnitsIn no se tendrá en cuenta. La expresión "4 * 5" se evalúa como 20, que es escalar y se interpreta mediante el uso de unitsIn especificado.

El argumento UnitsOut especifica las unidades en las que se debe expresar el número devuelto. Si desea expresar el resultado en las mismas unidades que la expresión evaluada, pase "NOCAST" o visNoCast.

Ejemplos donde se especifica una cadena:

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. 


Ejemplos donde se especifica un número:

 
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. 

Ejemplo:

La macro siguiente muestra cómo utilizar el método ConvertResult para indicar la distancia existente entre dos formas en centímetros, pies, yardas y millas. Para ejecutar esta macro, deberá tener dos formas seleccionadas en la página.

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

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.