Shape.GetFormulas 方法 (Visio)
會傳回很多儲存格的公式。
語法
expression。 GetFormulas
( _SRCStream()_
, _formulaArray()_
)
表達 代表 Shape 物件的變數。
參數
名稱 | 必要/選用 | 資料類型 | 描述 |
---|---|---|---|
SID_SRCStream () | 必要 | 整數 | 會識別要查詢之儲存格的資料流。 |
formulaArray () | 必要 | Variant | 輸出參數。 會接收查詢儲存格公式的陣列。 |
傳回值
無
註解
GetFormulas 方法就像 Cell 物件的 Formula 屬性,但您可以使用這個方法一次取得很多儲存格的公式,而不是一次取得一個儲存格的公式。 GetFormulas 方法是 GetResults 方法的特殊化,可以用來取得儲存格公式或結果。 設定呼叫 GetFormulas 方法所涉及的工作比設定 GetResults 方法所涉及的工作稍微少一些。
如果是 Shape 物件,您可以使用 GetFormulas 方法來取得任何一組儲存格的公式。
SID_SRCStream () 是 2 位元組整數的陣列。 針對Shape物件,SID_SRCStream () 應該是 3 n個 2 位元組整數的一維陣列,某些n> = 1。 GetFormulas 會將資料流程解譯為:
{sectionIdx, rowIdx, cellIdx}n
其中 sectionIdx 是所要儲存格的區段索引,rowIdx 是它的資料列索引,而 cellIdx 則是它的儲存格索引。
如果GetFormulas方法成功,formulaArray () 會傳回從 0 到n - 1 索引的n變體一維陣列。 每個變體都會以字串形式傳回公式。 formulaArray () 是由 GetFormulas 方法配置的 out 參數,它會將擁有權傳回給呼叫端。 呼叫端最後應該會在傳回的陣列上執行 SafeArrayDestroy 程式。 請注意, SafeArrayDestroy 程式的副作用是清除陣列專案所參考的變體,因此會解除配置 GetFormulas 方法傳回的任何字串。 (Microsoft Visual Basic 和 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 支援與意見反應。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應