Freigeben über


Master.SetResults-Methode (Visio)

Legt die Ergebnisse oder Formeln einer oder mehrerer Zellen fest.

Syntax

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

Ausdruck Eine Variable, die ein Master-Objekt darstellt.

Parameter

Name Erforderlich/Optional Datentyp Beschreibung
SID_SRCStream() Erforderlich Integer Ein Array, das die zu ändernden Zellen identifiziert.
UnitsNamesOrCodes() Erforderlich Variant Maßeinheiten, die den Einträgen im Ergebnisarray als Attribut zugewiesen werden.
resultArray() Erforderlich Variant Ergebnisse oder Formeln, die den identifizierten Zellen zugewiesen werden sollen.
Flags Erforderlich Integer Kennzeichen, die das Verhalten von SetResults beeinflussen.

Rückgabewert

Ganze Zahl

Hinweise

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.

Für Master-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. Sie teilen der SetResults-Methode mit, welche Zellen Sie festlegen möchten, indem Sie ein Array von ganzen Zahlen in _SID_SRCStream() übergeben. SID_SRCStream() ist ein eindimensionales Array von ganzen 2-Byte-Zahlen.

Für Master-Objekte sollte SID_SRCStream() ein eindimensionales Array von 4 n ganzen 2-Byte-Zahlen für n>= 1 sein. Die SetResults-Methode interpretiert den Datenstrom folgendermaßen:

{sheetID, sectionIdx, rowIdx, cellIdx }n

Dabei ist sheetID die ID-Eigenschaft des Shape-Objekts auf dem Zeichenblatt oder Master, dessen Zellergebnis geändert werden soll.

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. 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.

Das UnitsNamesOrCodes() -Array steuert, in welchen Maßeinheiten sich einzelne Einträge in Ergebnissen befinden. Jeder Eintrag im Array kann eine Zeichenfolge 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 die gewünschten Einheiten auch mit ganzzahligen Konstanten (visCentimeters, visInches usw.) angeben, die von der Visio-Typbibliothek in VisUnitCodes deklariert werden. Eine Liste der Konstanten, die für Maßeinheiten verwendet werden, finden Sie unter Informationen zu Maßeinheiten. Beachten Sie, dass die im Array UnitsNamesOrCodes() angegebenen Werte keine Auswirkungen haben, wenn visSetFormulas in Flags festgelegt ist.

Wenn UnitsNamesOrCodes() nicht leer ist, wird erwartet, dass es sich um ein eindimensionales Array von 1 <= u-Varianten handelt. Jeder Eintrag kann eine Zeichenfolge oder ganzzahliger Code oder leer (nichts) sein. Wenn der i 'te Eintrag leer ist, befindet sich der i 'te Eintrag in resultArray() in den einheiten, die von UnitsNamesOrCodes(j)angegeben sind, wobei j der letzte vorherige Eintrag ist, der nicht leer ist. Wenn Also alle Einträge in resultArray() in denselben Einheiten interpretiert werden sollen, müssen Sie nur ein UnitsNamesOrCodes() -Array übergeben, das einen Eintrag enthält. Wenn kein vorheriger Eintrag vorhanden ist, der nicht leer ist, oder wenn kein UnitsNamesOrCodes() -Array angegeben wird, wird visNumber (0x20) verwendet. Dies bewirkt, dass die Anwendung standardmäßig interne Einheiten verwendet (wie die ResultIU-Eigenschaft eines Cell-Objekts ).

Der resultArray() -Parameter sollte ein eindimensionales Array von 1 <= m Varianten sein. Ein Ergebnis kann als Double, Integer, String oder als Verweis auf eine Zeichenfolge übergeben werden. Zeichenfolgen werden nur akzeptiert, wenn visSetFormulas in Flags festgelegt ist. In diesem Fall werden Zeichenfolgen als Formeln interpretiert. Wenn resultArray(i) leer ist, wird die zelle i auf den Wert in resultArray(j) festgelegt, wobei j der Index des letzten vorherigen Eintrags ist, der nicht leer ist. Wenn kein nicht leerer Eintrag vorhanden ist, wird die entsprechende Zelle nicht geändert. Wenn weniger Ergebnisse als Zellen angegeben werden (wenn m < n ), wird die i'te Zelle, i < m , auf den gleichen Wert wie die m 'th Zelle festgelegt. Wenn Sie also viele Zellen auf denselben Wert festlegen möchten, müssen Sie nur eine Kopie des Werts übergeben.

Der Flags-Parameter sollte eine Bitmaske der folgenden Werte sein.

Konstante Wert Beschreibung
visSetFormulas &H1 Behandelt Zeichenfolgen in Ergebnissen als Formeln.
visSetBlastGuards &H2 Setzt die vorhandenen Zellwerte außer Kraft, sogar wenn sie geschützt sind.
visSetTestCircular &H4 Test für die Einrichtung von Zirkelzellverweisen.
visSetUniversalSyntax &H8 Formeln weisen eine universelle Syntax auf.

Der von der SetResults-Methode zurückgegebene Wert ist die Anzahl von Einträgen in SID_SRCStream(), die erfolgreich verarbeitet wurden. Wenn i < n-Einträge ordnungsgemäß verarbeitet werden, aber beim Eintrag i + 1 ein Fehler auftritt, löst die SetResults-Methode eine Ausnahme aus und gibt i zurück. Andernfalls wird n zurückgegeben.

Beispiel

Das folgende Beispiel zeigt, wie die SetResults-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. 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.

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. 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 sind für jede Zelle nur drei Umsetzungsplätze erforderlich (Abschnitt, Zeile und Zelle).

 
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 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.