GetFormulasU 方法 (Visio)

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

語法

expressionGetFormulasU( _SID_SRCStream()_ , _formulaArray()_ )

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

參數

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

傳回值

註解

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

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

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

{sheetID, sectionIdx, rowIdx, cellIdx}n

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

注意

如果專案中的 sheetIDvisInvalShapeID (-1) 或 SectionIdx 的底部位元組是 visSectionInval (255) ,將會忽略該項,而且會在對應的結果陣列專案中傳回空的 variant。 這樣做的原因 SID_SRCStream 是 () 陣列可以用於數個呼叫 GetFormulasUSetFormulas 及類似的方法,讓來電者只需要對呼叫間的資料流程進行少許變更。

如果 GetFormulasU 方法成功, formulaArray () 會傳回從0到 n -1 索引的 n 個變化的一維陣列。 每個變體都以字串形式傳回公式。 formulaArray () 是由 GetFormulasU 方法所指派的輸出參數,它會將擁有權傳回給來電者。 呼叫方最後應該在傳回的陣列上執行 SafeArrayDestroy 程式。 請注意, SafeArrayDestroy 程式具有清除陣列之專案所參照的變化的副作用,因此會解除配置 GetFormulasU 方法傳回的任何字串。 (microsoft Visual Basic 和 microsoft Visual Basic for Applications 為您處理這項功能。如果 formulaArray GetFormulasUNull,) () 方法就會失敗。

注意

從 Microsoft Visio 2000 開始,您可以使用本機和通用名稱來參照 Visio 圖形、主控、檔、頁面、列、附加元件、儲存格、超連結、樣式、字型、主圖形快捷方式、UI 物件及層級。 例如,當使用者命名圖案時,使用者就會指定本機名稱。 從 Microsoft Office Visio 2003 開始,ShapeSheet 試算表會在儲存格公式和值中只顯示通用名稱。 (在先前的版本中,不會在使用者介面中看到通用名稱。 )

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

範例

下列宏會顯示如何使用 GetFormulasU 方法。 它會假設使用中的 Visio 頁面上至少有三個圖案。 它會使用 GetFormulasU 來取得圖案1的寬度、圖案2的高度及圖形3的角度。

這個範例會使用 Page 物件的 GetFormulasU 方法來取得三個儲存格公式輸入陣列中每個儲存格都有四個槽,也就是 Master 物件。 如果是 ShapeStyle 物件,則每一個儲存格只需要三個空位 (區段、資料列及儲存格)。

 
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 支援與意見反應