Style.GetFormulas 方法 (Visio)

會傳回很多儲存格的公式。

語法

expression。 GetFormulas( _SRCStream()_ , _formulaArray()_ )

運算式 代表 Style 物件的變數。

參數

名稱 必要/選用 資料類型 描述
SID_SRCStream () 必要 整數 會識別要查詢之儲存格的資料流。
formulaArray () 必要 Variant 輸出參數。 會接收查詢儲存格公式的陣列。

傳回值

無

註解

GetFormulas 方法就像 Cell 物件的 Formula 屬性,但您可以使用這個方法一次取得很多儲存格的公式,而不是一次取得一個儲存格的公式。 GetFormulas 方法是 GetResults 方法的特殊化,可以用來取得儲存格公式或結果。 設定呼叫 GetFormulas 方法所涉及的工作比設定 GetResults 方法所涉及的工作稍微少一些。

如果是 Style 物件,您可以使用 GetFormulas 方法來取得任何一組儲存格的公式。

SID_SRCStream () 是 2 位元組整數的陣列。 對於 Style 物件,對於某些 n>= 1,SID_SRCStream () 應該是包含 3 n 個 2 位元組整數的一維陣列。 GetFormulas 會將串流解譯為:

{sectionIdx, rowIdx, cellIdx}n

其中 sectionIdx 是所要儲存格的區段索引,rowIdx 是它的資料列索引,而 cellIdx 則是它的儲存格索引。

如果 GetFormulas 方法成功, formulaArray () 會傳回 n 個變體的一維陣列,其索引範圍為 0 到 n - 1。 每個變體都會以字串的形式傳回公式。 formulaArray () 是由 GetFormulas 方法配置的 out 參數,該方法會將擁有權傳回給呼叫端。 呼叫端最終應該會在傳回的陣列上執行 SafeArrayDestroy 程序。 請注意, SafeArrayDestroy 程序的副作用是清除陣列項目所參照的變體,因此解除配置 GetFormulas 方法傳回的任何字串。 (Microsoft Visual Basic 和 Microsoft Visual Basic for Applications 會為您處理此動作。) 如果 formulaArray () 為 null,則 GetFormulas 方法會失敗。

注意事項

從 Microsoft Visio 2000 開始,您可以使用本機和通用名稱來參照 Visio 圖形、母片、文件、頁面、列、附加元件、儲存格、超連結、樣式、字型、主片快速鍵、UI 物件和圖層。 例如,當使用者命名圖形時,使用者是在指定本機名稱。 從 Microsoft Office Visio 2003 開始,ShapeSheet 試算表僅顯示儲存格公式和值中的通用名稱。 (在舊版中,通用名稱在使用者介面中是看不見的。)

身為開發人員,如果您不希望每次將方案本土化時就要變更名稱,可以在程式中使用通用名稱。 使用本機語法時,使用 GetFormulas 方法可取得一個以上的公式。 若是使用通用語法,請使用 GetFormulasU 方法取得一個以上的公式。

範例

下列巨集示範如何使用 GetFormulas 方法。 它假設有一個使用中的 Microsoft Visio 頁面,該頁面上至少有三個圖形。 它使用 GetFormulas 來取得圖形 1 的寬度、圖形 2 的高度,以及圖形 3 的角度。

這個範例會使用 Page 物件的 GetFormulas 方法來取得三個儲存格公式。 輸入陣列對於每一個儲存格會有四個空位,Master 物件也是同樣的情形。 如果是 Shape 或 Style 物件,則每一個儲存格只需要三個空位 (區段、資料列及儲存格)。

 
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

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。