Método Application.ConvertResult (Visio)

Converte uma sequência de caracteres ou um número em um número equivalente em diferentes unidades de medida.

Sintaxe

expressão. ConvertResult (StringOrNumber, UnitsIn, UnitsOut)

expressão Uma variável que representa um Aplicativo objeto.

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
StringOrNumber Obrigatório Variantes Sequência de caracteres ou número a ser convertido; pode ser uma sequência de caracteres, número com ponto flutuante ou número inteiro.
UnitsIn Obrigatório Variantes Unidades de medida para atribuir a StringOrNumber.
UnitsOut Obrigatório Variantes Unidades de medida para expressar o resultado.

Valor de retorno

Duplo

Comentários

Se passado como uma sequência de caracteres, StringOrNumber deve ser a fórmula ou fórmula prospectiva de uma célula, ou o resultado ou resultado prospectivo de uma célula expresso como uma sequência de caracteres. O método ConvertResult avalia a sequência de caracteres e converte o resultado nas unidades designadas por UnitsOut. O método ConvertResult retornará um erro se a sequência de caracteres contiver qualquer referência a células.

Os valores possíveis de StringOrNumber incluem:

  • 1.7
  • 3
  • "2.5"
  • "4,1 cm"
  • "12 pés - 17 pol + (12 cm / SQRT(7))"

Os argumentos UnitsIn e UnitsOut podem ser sequências de caracteres como "polegadas", "polegada", "pol." ou "p". As sequências de caracteres podem ser usadas para todas as unidades do Microsoft Office Visio com suporte, como centímetros, metros, milhas e assim por diante. Você também pode usar qualquer das constantes de unidades declaradas pela biblioteca de tipos do Visio em VisUnitCodes. Uma lista de unidades válidas também está listada em Sobre unidades de medida.

Se StringOrNumber for um número com ponto flutuante ou um número inteiro, UnitsIn declarará a unidade de medida na qual o método ConvertResult deverá transformar o número. Passe "" para indicar unidades internas do Visio.

Se StringOrNumber for uma sequência de caracteres, UnitsIn especificará como interpretar o resultado avaliado e será usado apenas se o resultado for escalar. Por exemplo, a expressão "4 * 5 cm" é avaliada como 20 cm, que não é uma escalar, então UnitsIn será ignorado. A expressão "4 * 5" é avaliada como 20, que é escalar e é interpretada usando o UnitsIn especificado.

O argumento UnitsOut especifica em quais unidades o número retornado deve ser expresso. Se desejar que os resultados sejam expressos nas mesmas unidades que a expressão avaliada, passe "NOCAST" ou visNoCast.

Exemplos em que sequência de caracteres é especificada:

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. 


Exemplos em que número é especificado:

 
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. 

Exemplo

A macro a seguir mostra como usar o método ConvertResult para relatar a distância entre duas formas em centímetros, pés, jardas e milhas. Para executar essa macro, você deve ter duas formas selecionadas na sua 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

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.