Shape.GetFormulas-Methode (Visio)
Gibt die Formeln vieler Zellen zurück.
Syntax
Ausdruck. GetFormulas
( _SRCStream()_
, _formulaArray()_
)
Ausdruck Eine Variable, die ein Shape-Objekt darstellt.
Parameter
Name | Erforderlich/Optional | Datentyp | Beschreibung |
---|---|---|---|
SID_SRCStream() | Erforderlich | Integer | Ein Datenstrom, der die abzufragenden Zellen identifiziert. |
formulaArray() | Erforderlich | Variant | Ausgabeparameter. Ein Array, das Formeln abgefragter Zellen empfängt. |
Rückgabewert
Nichts
Bemerkungen
Die GetFormulas-Methode ähnelt der Formula-Eigenschaft eines Cell-Objekts , mit der Ausnahme, dass Sie sie verwenden können, um die Formeln von vielen Zellen gleichzeitig und nicht von einer Zelle gleichzeitig abzurufen. Die GetFormulas-Methode ist eine Spezialisierung der GetResults-Methode , die zum Abrufen von Zellformeln oder Ergebnissen verwendet werden kann. Das Einrichten eines Aufrufs der GetFormulas-Methode erfordert etwas weniger Arbeit als das Einrichten der GetResults-Methode .
Für Shape-Objekte können Sie die GetFormulas-Methode zum Abrufen von Formeln für Zellengruppen verwenden.
SID_SRCStream() ist ein Array von ganzen 2-Byte-Zahlen. Bei Shape-Objekten sollte SID_SRCStream() ein eindimensionales Array von 3 n ganzen 2-Byte-Zahlen für einige n>= 1 sein. GetFormulas interpretiert den Datenstrom wie folgt:
{sectionIdx, rowIdx, cellIdx}n
Dabei ist sectionIdx der Abschnittsindex der gewünschten Zelle, rowIdx ist deren Zeilenindex, und cellIdx ist deren Zellenindex.
Wenn die GetFormulas-Methode erfolgreich ist, gibt formulaArray() ein eindimensionales Array von n Varianten zurück, die von 0 bis n - 1 indiziert sind. Jede Variante gibt eine Formel als Zeichenfolge zurück. formulaArray() ist ein out-Parameter, der von der GetFormulas-Methode zugeordnet wird, die den Besitz an den Aufrufer zurückgibt. Der Aufrufer sollte zum Schluss die SafeArrayDestroy-Prozedur für das zurückgegebene Array ausführen. Beachten Sie, dass die SafeArrayDestroy-Prozedur den Nebeneffekt hat, dass die Varianten gelöscht werden, auf die von den Einträgen des Arrays verwiesen wird, und daher die Zuordnung aller Zeichenfolgen aufgehoben wird, die die GetFormulas-Methode zurückgibt. (Microsoft Visual Basic und Visual Basic for Applications übernehmen dies für Sie.) Die GetFormulas-Methode schlägt fehl, wenn formulaArray()null ist.
Hinweis
Ab Microsoft Visio 2000 können Sie sowohl lokale als auch universelle Namen verwenden, um auf Shapes, Master-Shapes, Dokumente, Zeichenblätter, Zeilen, Add-Ons, Zellen, Hyperlinks, Formatvorlagen, Schriftarten, Master-Shape-Verknüpfungen, Benutzeroberflächenobjekte und Layer von Visio zu verweisen. Wenn ein Benutzer z. B. ein Shape verwendet, gibt er einen lokalen Namen an. Ab Microsoft Office Visio 2003 werden in der ShapeSheet-Kalkulationstabelle nur universelle Namen in Zellformeln und Werten angezeigt. (In früheren Versionen wurden universelle Namen in der Benutzeroberfläche nicht angezeigt.)
Als Entwickler können Sie universelle Namen in einem Programm verwenden, falls Sie einen Namen nicht jedes Mal ändern möchten, wenn eine Lösung lokalisiert wird. Verwenden Sie die GetFormulas-Methode, um mehr als eine Formel abzurufen, wenn Sie die lokale Syntax verwenden. Verwenden Sie die GetFormulasU-Methode, um mehr als eine Formel abzurufen, wenn Sie die universelle Syntax verwenden.
Beispiel
Mit dem folgenden Makro wird gezeigt, wie die GetFormulas-Methode verwendet wird. Voraussetzung für das Makro ist ein aktives Microsoft Visio-Zeichenblatt mit mindestens drei Shapes. GetFormulas 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 GetFormulas-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 GetFormulas_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
'Return the formulas of the cells.
Dim avarFormulaArray() As Variant
ActivePage.GetFormulas aintSheetSectionRowColumn, avarFormulaArray
Debug.Print "Shape 1 width is "; avarFormulaArray(0)
Debug.Print "Shape 2 height is "; avarFormulaArray(1)
Debug.Print "Shape 3 angle is "; avarFormulaArray(2)
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.