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 () 會傳回從 0 到n - 1 索引的n個變體的一維陣列。 每個變體都會以字串形式傳回公式。 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方法來取得三個儲存格公式。輸入陣列對於每個儲存格都有四個位置,就像Master物件一樣。 如果是 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 支援與意見反應。