Page.GetResults-Methode (Visio)
Ruft die Ergebnisse oder die Formeln vieler Zellen ab.
Syntax
Ausdruck. GetResults
( _SID_SRCStream()_
, _Flags_
, _UnitsNamesOrCodes()_
, _resultArray()_
)
Ausdruck Eine Variable, die ein Page-Objekt darstellt.
Parameter
Name | Erforderlich/Optional | Datentyp | Beschreibung |
---|---|---|---|
SID_SRCStream() | Erforderlich | Integer | Array, das die abzufragenden Zellen identifiziert. |
Flags | Erforderlich | Integer | Kennzeichen, die die im Ergebnis zurückgegebenen Eintragstypen beeinflussen. |
UnitsNamesOrCodes() | Erforderlich | Variant | Array von Maßeinheiten, in denen die Ergebnisse zurückgegeben werden sollen. |
resultArray() | Erforderlich | Variant | Array, das die Ergebnisse oder Formeln abgefragter Zellen empfängt. |
Rückgabewert
Nichts
Bemerkungen
Die GetResults-Methode ähnelt der Result-Eigenschaft für das Cell-Objekt, sie kann jedoch verwendet werden, um die Ergebnisse (Werte) vieler Zellen gleichzeitig abzurufen, statt einen Aufruf zurzeit auszuführen.
Für ein Page-Objekt können Sie die GetResults-Methode verwenden, um Ergebnisse einer Reihe von Zellen in einer Reihe von Shapes des Zeichenblatts abzurufen.
SID_SRCStream() ist ein Array von ganzen 2-Byte-Zahlen. Für Page-Objekte sollte SID_SRCStream() ein eindimensionales Array von 4 n ganzen 2-Byte-Zahlen für n>= 1 sein. Die GetResults-Methode interpretiert SID_SRCStream() folgendermaßen:
{sheetID, sectionIdx, rowIdx, cellIdx }n
Dabei ist sheetID die ID-Eigenschaft des Shape-Objekts auf dem Zeichenblatt, dessen Zellergebnis abgerufen werden soll.
Hinweis
Wenn die sheetID in einem Eintrag visInvalShapeID (-1) ist oder das untere Byte von sectionIdxvisSectionInval (255) ist, wird der Eintrag ignoriert, und eine leere Variante wird im entsprechenden Ergebnisarrayeintrag zurückgegeben. Der Grund dafür ist, dass das gleiche SID_SRCStream() -Array für mehrere Aufrufe von GetResults, SetResults und ähnlichen Methoden verwendet werden kann, wobei der Aufrufer nur geringfügige Änderungen am Datenstrom zwischen Aufrufen vornehmen muss.
Der Flags-Parameter gibt an, in welchem Datentyp die zurückgegebenen Ergebnisse ausgedrückt werden sollen. Es sollte einen der folgenden Werte aufweisen.
Konstante | Wert | Beschreibung |
---|---|---|
visGetFloats | 0 | Ergebnisse werden als Double-Werte zurückgegeben (VT_R8). |
visGetTruncatedInts | 1 | Ergebnisse werden als abgeschnittene Long Integer-Werte zurückgegeben (VT_I4). |
visGetRoundedInts | 2 | Ergebnisse werden als gerundete Long Integer-Werte zurückgegeben (VT_I4). |
visGetStrings | 3 | Ergebnisse werden als String-Werte zurückgegeben (VT_BSTR). |
visGetFormulas | 4 | Formeln werden als String-Werte zurückgegeben (VT_BSTR). |
visGetFormulasU | 5 | Formeln werden in universeller Syntax zurückgegeben (VT_BSTR). |
Der UnitsNamesOrCodes() -Parameter ist ein Array, das steuert, in welchen Maßeinheiten einzelne Ergebnisse zurückgegeben werden. Jeder Eintrag im Array kann eine Zeichenfolge wie "inches", "inch", "in." oder "i" sein. Zeichenfolgen können für alle unterstützten Visio-Einheiten wie Zentimeter, Meter, Meilen usw. verwendet werden. Sie können auch die gewünschten Einheiten mit ganzzahligen Konstanten (visCentimeter,visInches usw.) angeben, die von der Visio-Typbibliothek deklariert werden. Beachten Sie, dass die im UnitsNamesOrCodes() -Array angegebenen Werte keine Auswirkungen haben, wenn FlagsvisGetFormulas ist.
Wenn UnitsNamesOrCodes() nicht NULL ist, erwartet die Anwendung, dass es sich um ein eindimensionales Array von 1 <= uVariants handelt. Jeder Eintrag kann eine Zeichenfolge oder ganzzahliger Code oder leer (nichts) sein. Wenn der i 'te Eintrag leer ist, wird das zurückgegebene Ergebnis in den von UnitsNamesOrCodes(j) angegebenen Einheiten zurückgegeben, wobei j der Index des letzten vorherigen nicht leeren Eintrags ist. Wenn sich also alle zurückgegebenen Werte in den gleichen Einheiten befinden sollen, müssen Sie nur ein UnitsNamesOrCodes() -Array mit einem Eintrag übergeben. Wenn kein vorheriger nicht leerer Eintrag vorhanden ist oder kein UnitsNameOrCodes() -Array angegeben wird, wird visNumber (0x20) verwendet. Dadurch werden interne Einheiten (z. B. die ResultIU-Eigenschaft eines Cell-Objekts ) zurückgegeben.
Wenn die GetResults-Methode erfolgreich ist, gibt results ein eindimensionales Array von n Varianten zurück, die von null (0) bis n - 1 indiziert sind. Der Typ der zurückgegebenen Varianten ist eine Funktion von Flags. Der resultArray()- Parameter ist ein out-Argument, das von der GetResults-Methode zugeordnet wird, die den Besitz an den Aufrufer zurückgibt. Der Aufrufer sollte schließlich SafeArrayDestroy für das zurückgegebene Array ausführen. Beachten Sie, dass SafeArrayDestroy den Nebeneffekt hat, dass die Varianten, auf die durch die Einträge des Arrays verwiesen wird, gelöscht werden. Daher wird die Zuordnung aller Zeichenfolgen aufgehoben, die von der GetResults-Methode zurückgegeben werden. (Dies wird von Microsoft Visual Basic und Microsoft Visual Basic für Applikationen ausgeführt.)
Beispiel
Mit dem folgenden Beispiel wird gezeigt, wie die GetResults-Methode verwendet wird. Voraussetzung für das Beispiel ist ein aktives Zeichenblatt mit mindestens drei Shapes. Die GetResults-Methode wird dazu verwendet, die Breite von Shape 1, die Höhe von Shape 2 und den Winkel von Shape 3 abzurufen.
In diesem Beispiel wird die GetResults-Methode des Page-Objekts verwendet, um drei Zellformeln abzurufen. Das Eingabearray weist vier Umsetzungsplätze für jede Zelle aus, dies wäre auch für Master-Objekte der Fall. Für Shape- oder Style-Objekte wären für jede Zelle nur drei Umsetzungsplätze erforderlich (Abschnitt, Zeile und Zelle).
Public Sub GetResults_Example()
On Error GoTo HandleError
Dim intCounter As Integer
Dim aintSheetSectionRowColumn(1 To (3 * 4)) As Integer
aintSheetSectionRowColumn(1) = ActivePage.Shapes(1).ID
aintSheetSectionRowColumn(2) = visSectionObject
aintSheetSectionRowColumn(3) = visRowXFormOut
aintSheetSectionRowColumn(4) = visXFormWidth
aintSheetSectionRowColumn(5) = ActivePage.Shapes(2).ID
aintSheetSectionRowColumn(6) = visSectionObject
aintSheetSectionRowColumn(7) = visRowXFormOut
aintSheetSectionRowColumn(8) = visXFormHeight
aintSheetSectionRowColumn(9) = ActivePage.Shapes(3).ID
aintSheetSectionRowColumn(10) = visSectionObject
aintSheetSectionRowColumn(11) = visRowXFormOut
aintSheetSectionRowColumn(12) = visXFormAngle
'Get first two values in inches. The second element in
'the units array is left uninitialized (empty) because we
'want the second result in the same units as the first
'result. The third result is initialized in degrees. Note that
'units can be expressed as a string or an integer constant.
Dim avarUnits(1 To 3) As Variant
avarUnits(1) = "in."
avarUnits(3) = visDegrees
'Return results of cells as an array of floating point numbers.
Dim avarResults() As Variant
ActivePage.GetResults aintSheetSectionRowColumn, visGetFloats, _
avarUnits, avarResults
For intCounter = 0 To 3
Debug.Print avarResults(intCounter)
Next
Exit Sub
HandleError:
MsgBox "Error"
Exit Sub
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.