Page.GetFormulasU 方法 (Visio)

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

語法

expression。 GetFormulasU( _SID_SRCStream()_ , _formulaArray()_ )

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

參數

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

傳回值

無

註解

GetFormulasU 方法類似於 Cell 物件的 FormulaU 屬性,但有不同之處在於您可以使用它一次取得多個儲存格的公式,而非一次取得一個儲存格。 GetFormulasU 方法是 GetResults 方法的特殊化,可以用來取得儲存格公式或結果。 設定呼叫 GetFormulasU 方法所涉及的工作比設定 GetResults 方法所涉及的工作稍微少一些。

使用 GetFormulasU 方法以通用語法取得頁面或主版的任何圖形集中任何一組儲存格的通用語法公式。

SID_SRCStream () 是 2 位元組整數的陣列。 SID_SRCStream () 應該是 n>= 1 時,由 4 個 n 個 2 位元組整數組成的一維陣列。 GetFormulasU 方法會將SID_SRCStream () 解譯為:

{sheetID, sectionIdx, rowIdx, cellIdx}n

其中的 sheetID 為頁面或主圖形上的 Shape 物件的 ID 屬性 (需要此頁面或主圖形的儲存格公式)。

注意事項

如果項目中的 sheetID 為 visInvalShapeID (-1) ,或 sectionIdx 的底部位元 組為 visSectionInval (255) ,則會忽略該項目,並在對應的結果陣列項目中傳回一個空變體。 原因是相同的 SID_SRCStream () 陣列可用於多次呼叫 GetFormulasU、 SetFormulas 和類似方法,而呼叫端只需要在呼叫之間對資料流程進行次要變更。

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

注意事項

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

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

範例

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

此範例使用 Page 物件的 GetFormulasU 方法來取得三個儲存格公式 輸入陣列的每個儲存格有四個插槽,主物件也是如此。 如果是 Shape 或 Style 物件,則每一個儲存格只需要三個空位 (區段、資料列及儲存格)。

 
Public Sub GetFormulasU_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.GetFormulasU 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 支援與意見反應。