InvisibleApp.ConvertResult-Methode (Visio)

Konvertiert eine Zeichenfolge oder eine Zahl in eine entsprechende Zahl in anderen Maßeinheiten.

Syntax

Ausdruck. ConvertResult (StringOrNumber, UnitsIn, UnitsOut)

Ausdruck Eine Variable, die ein InvisibleApp-Objekt darstellt.

Parameter

Name Erforderlich/Optional Datentyp Beschreibung
StringOrNumber Erforderlich Variant Eine Zeichenfolge oder eine Zahl, die konvertiert werden soll. Es kann sich um eine Zeichenfolge, eine Gleitkommazahl oder eine ganze Zahl handeln.
UnitsIn Erforderlich Variant Maßeinheiten als Attribute für StringOrNumber.
UnitsOut Erforderlich Variant Maßeinheiten, in denen das Ergebnis ausgedrückt werden soll.

Rückgabewert

Gleitkommawert mit doppelter Genauigkeit

HinwBemerkungeneise

Wenn string als Zeichenfolge übergeben wird, kann StringOrNumber die Formel oder prospektive Formel einer Zelle oder das Ergebnis oder das prospektive Ergebnis einer Zelle sein, die als Zeichenfolge ausgedrückt wird. Die ConvertResult-Methode wertet die Zeichenfolge aus und konvertiert das Ergebnis in die von UnitsOut angegebenen Einheiten. Die ConvertResult-Methode gibt einen Fehler zurück, wenn die Zeichenfolge Zellbezüge enthält.

StringOrNumber kann u. a. die folgenden Werte aufweisen:

  • 1.7
  • 3
  • "2.5"
  • "4,1 cm"
  • "12 ft - 17 in + (12 cm / WURZEL(7))"

Die Argumente UnitsIn und UnitsOut können Zeichenfolgen wie "inches", "inch", "in." oder "i" sein. Zeichenfolgen können für alle unterstützten Microsoft Office Visio-Einheiten wie Zentimeter, Meter, Meilen usw. verwendet werden. Sie können auch jede der Einheitenkonstanten verwenden, die von der Visio-Typbibliothek in VisUnitCodes deklariert werden. Eine Liste der gültigen Einheiten ist auch unter About measure units of measure aufgeführt.

Wenn es sich bei StringOrNumber um eine Gleitkommazahl oder um eine ganze Zahl handelt, deklariert UnitsIn, welche Maßeinheit die ConvertResult-Methode für die Zahl annehmen soll. Übergeben Sie "" für interne Visio-Einheiten.

Wenn StringOrNumber eine Zeichenfolge ist, gibt UnitsIn an, wie das ausgewertete Ergebnis interpretiert werden soll, und wird nur verwendet, wenn das Ergebnis ein Skalar ist. Der Ausdruck "4 * 5 cm" ergibt beispielsweise 20 cm, was kein Skalar ist, sodass UnitsIn ignoriert wird. Der Ausdruck "4 * 5" ergibt 20, was ein Skalar ist und mithilfe der angegebenen UnitsIn interpretiert wird.

Das UnitsOut-Argument gibt an, in welchen Einheiten die zurückgegebene Zahl ausgedrückt werden soll. Wenn die Ergebnisse in den gleichen Einheiten wie der ausgewertete Ausdruck ausgedrückt werden sollen, übergeben Sie "NOCAST" oder visNoCast.

Beispiele, in denen eine Zeichenfolge angegeben ist:

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. 


Beispiele, in denen eine Zahl angegeben ist:

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. 

Beispiel

Mit dem folgenden Makro wird gezeigt, wie mit der ConvertResult-Methode der Abstand zwischen zwei Shapes in Zentimeter, Fuß, Yard und Meilen angegeben wird. Auf dem Zeichenblatt müssen zwei Shapes ausgewählt sein, um dieses Makro auszuführen.

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

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.