Page. SetResults-Methode (Visio)Page.SetResults method (Visio)

Legt die Ergebnisse oder Formeln einer oder mehrerer Zellen fest.Sets the results or formulas of one or more cells.

SyntaxSyntax

Ausdruck.expression. SetResults( _SID_SRCStream()_ , _UnitsNamesOrCodes()_ , _resultArray()_ , _Flags_ )

Ausdruck Eine Variable, die ein Page -Objekt darstellt.expression A variable that represents a Page object.

ParameterParameters

NameName Erforderlich/OptionalRequired/Optional DatentypData type BeschreibungDescription
SID_SRCStream()SID_SRCStream() ErforderlichRequired IntegerInteger Ein Array, das die zu ändernden Zellen identifiziert.An array identifying cells to be modified.
UnitsNamesOrCodes ()UnitsNamesOrCodes() ErforderlichRequired VariantVariant Maßeinheiten, die den Einträgen im Ergebnisarray als Attribut zugewiesen werden.Measurement units to be attributed to entries in results array.
resultArray ()resultArray() ErforderlichRequired VariantVariant Ergebnisse oder Formeln, die den identifizierten Zellen zugewiesen werden sollen.Results or formulas to be assigned to identified cells.
FlagsFlags ErforderlichRequired IntegerInteger Kennzeichen, die das Verhalten von SetResults beeinflussen.Flags that influence the behavior of SetResults.

RückgabewertReturn value

Ganze ZahlInteger

BemerkungenRemarks

Die SetResults-Methode ähnelt der Result-Methode eines Cell-Objekts, sie kann jedoch festgelegt werden, um die Ergebnisse (Werte) vieler Zellen gleichzeitig abzurufen, statt einen Aufruf zurzeit auszuführen.The SetResults method is like the Result method of a Cell object, except that it can be used to set the results (values) of many cells at once, rather than one cell at a time.

Für Page-Objekte können Sie die SetResults-Methode verwenden, um Ergebnisse einer Reihe von Zellen in einer Reihe von Shapes des Zeichenblatts oder des Masters festzulegen.For Page objects, you can use the SetResults method to set results of any set of cells in any set of shapes of the page or master.

Sie bestimmen für die SetResults-Methode, welche Zellen festgelegt werden sollen, indem Sie in SID_SRCStream() ein Array ganzer Zahlen übergeben.You tell the SetResults method which cells you want to set by passing an array of integers in SID_SRCStream(). SID_SRCStream() ist ein eindimensionales Array von ganzen 2-Byte-Zahlen.SID_SRCStream() is a one-dimensional array of 2-byte integers.

Bei Page -Objekten sollte SID_SRCStream () ein eindimensionales Array von 4 n 2-Byte-Ganzzahlen für n >= 1 sein.For Page objects, SID_SRCStream() should be a one-dimensional array of 4 n 2-byte integers for n >= 1. Die SetResults-Methode interpretiert den Datenstrom folgendermaßen:The SetResults method interprets the stream as:

{sheetID, sectionIdx, rowIdx, cellIdx }n

Dabei ist die ID -Eigenschaft des Shape -Objekts auf dem Zeichen Blatt oder Master, dessen Zellen Ergebnis geändert werden soll.where sheetID is the ID property of the Shape object on the page or master whose cell result is to be modified.

Wenn sheetID in einem Eintrag visInvalShapeID (-1) ist oder wenn das untere Byte von _sectionIdx _visSectionInval (255) ist, wird der Eintrag von der SetResults-Methode ignoriert.If the sheetID in an entry is visInvalShapeID (-1) or if the bottom byte of sectionIdx is visSectionInval (255), the entry is ignored by the SetResults method. Die Ursache ist, dass das gleiche SID_SRCStream()-Array für mehrere Aufrufe der SetResults-Methode, der GetResults-Methode und ähnlicher Methoden verwendet wird, wobei der Aufrufer zwischen den Aufrufen nur geringfügige Änderungen am Datenstrom vornehmen muss.The motivation for this is that the same SID_SRCStream() array can be used on several calls to SetResults, GetResults, and similar methods with the caller only needing to make minor changes to the stream between calls.

Das UnitsNamesOrCodes ()- Array steuert, in welchen Maßeinheiten sich einzelne Einträge in Ergebnissen befinden.The UnitsNamesOrCodes() array controls what measurement units individual entries in results are in. Jeder Eintrag im Array kann eine Zeichenfolge wie "inches", "inch", "in." oder "i" sein.Each entry in the array can be a string such as "inches", "inch", "in.", or "i". Zeichenfolgen können für alle unterstützten Microsoft Office Visio-Einheiten wie Zentimeter, Meter, Meilen usw. verwendet werden.Strings may be used for all supported Microsoft Office Visio units such as centimeters, meters, miles, and so on. Sie können auch die gewünschten Einheiten mit ganzzahligen Konstanten (visCentimeters, visInchesusw.) angeben, die von der Visio-Typbibliothek in VisUnitCodesdeklariert werden.You can also indicate desired units with integer constants (visCentimeters, visInches, and so on) declared by the Visio type library in VisUnitCodes. Eine Liste der für Maßeinheiten verwendeten Konstanten finden Sie unter about Units of Measure.For a list of constants used for units of measure, see About units of measure. Beachten Sie, dass die im Array UnitsNamesOrCodes () angegebenen Werte keine Auswirkung haben, wenn visSetFormulas in _Flags_festgelegt ist.Note that the values specified in the UnitsNamesOrCodes() array have no effect if visSetFormulas is set in Flags.

Wenn UnitsNamesOrCodes () nicht leer ist, wird davon ausgegangen, dass es sich um ein eindimensionales Array von 1 <= u -Varianten handelt.If UnitsNamesOrCodes() is not empty, we expect it to be a one-dimensional array of 1 <= u variants. Jeder Eintrag kann eine Zeichenfolge oder ein ganzzahliger Code sein oder Empty (Nothing).Each entry can be a string or integer code, or empty (nothing). Wenn der i ' th-Eintrag leer ist, befindet sich der i ' th-Eintrag in resultArray () in den Einheiten, die durch Units (j) bestimmt werden, wobei j der letzte vorherige Eintrag ist, der nicht leer ist.If the i 'th entry is empty, the i 'th entry in resultArray() is in the units designated by units(j) , where j is the most recent prior entry that is not empty. Wenn Sie also möchten, dass alle Einträge in resultArray () in denselben Einheiten interpretiert werden, müssen Sie nur ein UnitsNamesOrCodes () -Array übergeben, das einen Eintrag enthält.Thus, if you want all entries in resultArray() to be interpreted in the same units, you need only pass a UnitsNamesOrCodes() array that has one entry. Wenn es keinen vorherigen Eintrag gibt, der nicht leer ist, oder wenn __ kein Units-Array angegeben wird, wird visNumber (0x20) verwendet.If there is no prior entry that is not empty, or if no units array is supplied, visNumber (0x20) will be used. Dadurch wird die Anwendung standardmäßig auf interne Einheiten (ebenso wie die ResultIU -Eigenschaft eines Cell -Objekts).This causes the application to default to internal units (as does the ResultIU property of a Cell object).

Der resultArray () -Parameter sollte ein eindimensionales Array von 1 <= m -Varianten sein.The resultArray() parameter should be a one-dimensional array of 1 <= m variants. Ein Ergebnis kann als Double, Integer, Stringoder ein Verweis auf eine Zeichenfolgeübergeben werden.A result can be passed as Double, Integer, String, or a reference to a String. Zeichenfolgen werden nur akzeptiert, wenn visSetFormulas in _Flags_festgelegt wird, in denen die Zeichenfolgen als Formeln interpretiert werden.Strings are accepted only if visSetFormulas is set in Flags, in which case strings are interpreted as formulas. Wenn resultArray (i) leer ist, wird die Zelle i ' th auf den Wert in resultArray (j) festgelegt, wobei j der Index des letzten vorherigen Eintrags ist, der nicht leer ist.If resultArray(i) is empty, the i 'th cell will be set to the value in resultArray(j), where j is the index of the most recent prior entry that is not empty. Wenn kein nicht leerer Eintrag vorhanden ist, wird die entsprechende Zelle nicht geändert.If there is no prior entry that is not empty, the corresponding cell is not altered. Wenn weniger Ergebnisse als Zellen angegeben werden (wenn m #a0 n ), wird die i ' th-Zelle, ich #a1 m , auf denselben Wert festgelegt wie die Zelle m ' th.If fewer results than cells are specified (if m < n ), the i 'th cell, i < m , will be set to the same value as the m 'th cell. Wenn Sie also viele Zellen auf denselben Wert festlegen möchten, müssen Sie nur eine Kopie des Werts übergeben.Thus, to set many cells to the same value, you need only pass one copy of the value.

Der Parameter Flags sollte eine Bitmaske der folgenden Werte sein.The Flags parameter should be a bitmask of the following values.

KonstanteConstant WertValue BeschreibungDescription
visSetFormulasvisSetFormulas &H1&H1 Behandelt Zeichenfolgen in Ergebnissen als Formeln.Treat strings in results as formulas.
visSetBlastGuardsvisSetBlastGuards &H2&H2 Setzt die vorhandenen Zellwerte außer Kraft, sogar wenn sie geschützt sind.Override present cell values even if they're guarded.
visSetTestCircularvisSetTestCircular &H4&H4 Test für die Einrichtung von Zirkelzellverweisen.Test for establishment of circular cell references.
visSetUniversalSyntaxvisSetUniversalSyntax &h8&H8 Formeln weisen eine universelle Syntax auf.Formulas are in universal syntax

Der von der SetResults-Methode zurückgegebene Wert ist die Anzahl von Einträgen in SID_SRCStream(), die erfolgreich verarbeitet wurden.The value returned by the SetResults method is the number of entries in SID_SRCStream() that were successfully processed. Wenn i < n Einträge richtig verarbeitet werden, aber bei Eintrag i + 1 ein Fehler auftritt, wird von der SetResults-Methode eine Ausnahme ausgelöst und i zurückgegeben.If i < n entries are processed correctly, but an error occurs on the i + 1st entry, the SetResults method raises an exception and returns i. Andernfalls wird n zurückgegeben.Otherwise, n is returned.

BeispielExample

Im folgenden Beispiel wird die Verwendung der SetResults -Methode veranschaulicht.The following example shows how to use the SetResults method. Voraussetzung für das Beispiel ist ein aktives Zeichenblatt mit mindestens drei Shapes.This example assumes there is an active page that has at least 3 shapes on it. Die GetResults-Methode wird dazu verwendet, die Breite von Shape 1, die Höhe von Shape 2 und den Winkel von Shape 3 abzurufen.It uses the GetResults method to get the width of shape 1, the height of shape 2, and the angle of shape 3. Anschließend wird SetResults verwendet, um die Breite von Form 1 auf die Höhe von Form 2 und die Höhe von Form 2 auf die Breite von Form 1 festzulegen. der Winkel von Form 3 bleibt unverändert.It then uses SetResults to set the width of shape 1 to the height of shape 2 and the height of shape 2 to the width of shape 1.The angle of shape 3 is left unaltered.

In diesem Beispiel wird die GetResults-Methode des Page-Objekts verwendet, um drei Zellformeln abzurufen, und die SetResults-Methode des gleichen Objekts, um die Formeln festzulegen.This example uses the GetResults method of the Page object to get 3 cell formulas and the SetResults method of the same object to set the formulas. Das Eingabearray weist vier Umsetzungsplätze für jede Zelle aus, dies wäre auch für Master-Objekte der Fall.The input array has 4 slots for each cell, as it also would for Master objects. Für Shape- oder Style-Objekte sind für jede Zelle nur drei Umsetzungsplätze erforderlich (Abschnitt, Zeile und Zelle).For Shape or Style objects, only 3 slots are needed for each cell (section, row, and cell).

 
Public Sub Set Results_Example() 
 
 On Error GoTo HandleError 
 
 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 the 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 
 
 'Use SetResults to: 
 
 ' - Set the width of shape 1 to the height of shape 2. 
 
 ' - Set the height of shape 2 to the width of shape 1. 
 
 'NOTE: avarResults() is indexed from 0 to 2. 
 
 Dim varTemp As variant 
 varTemp = avarResults(0) 
 avarResults(0) = avarResults(1) 
 avarResults(1) = varTemp 
 
 'Pass the same array back to SetResults that we 
 'just passed to GetResults, but leave the angle 
 'alone. By setting the sheet ID entry in the third 
 'slot of the aintSheetSectionRowColumn array to 
 'visInvalShapeID, we tell SetResults to ignore that slot. 
 aintSheetSectionRowColumn(9) = visInvalShapeID 
 
 'Set the results of the cells. 
 ActivePage.SetResults aintSheetSectionRowColumn, avarUnits, avarResults, 0 
 
 Exit Sub 
 
HandleError: 
 
 MsgBox "Error" 
 
 Exit Sub 
 
End Sub

Support und FeedbackSupport and feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation?Have questions or feedback about Office VBA or this documentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.