Page.GetResults 方法 (Visio)

获取许多单元格的结果或公式。

语法

expressionGetResults( _SID_SRCStream()_ , _Flags_ , _UnitsNamesOrCodes()_ , _resultArray()_ )

表达 一个代表 Page 对象的变量。

参数

名称 必需/可选 数据类型 说明
SID_SRCStream () 必需 Integer 用于标识要查询的单元格的数组。
Flags 必需 Integer 影响结果中返回的项目类型的标志。
UnitsNamesOrCodes () 必需 Variant 返回的结果要使用的度量单位的数组。
resultArray () 必需 Variant 用于接收被查询单元格的结果或公式的数组。

返回值

Nothing

注解

GetResults 方法与 Cell 对象的 Result 属性类似,不同之处在于您可以使用该方法同时获取许多单元格的结果(值),而不是一次只获取一个单元格的结果(值)。

对于 Page 对象,您可以使用 GetResults 方法来获取页面的任意一组形状中的任意一组单元格的结果。

SID_SRCStream() 是一个 2 字节的整数数组。 对于 Page 对象,SID_SRCStream () 应是 n= 1 的 4 n 个 2 字节整数的>一维数组。 GetResults 方法将 SID_SRCStream() 解释为:

{sheetID, sectionIdx, rowIdx, cellIdx }n

其中 sheetID 为需要其单元格公式的页面或主控形状上的 Shape 对象的 ID 属性。

注意

如果条目中的 sheetIDvisInvalShapeID (-1) ,或者 sectionIdx 的底部字节是 visSectionInval (255) ,则将忽略该条目,并在相应的结果数组条目中返回空变体。 这是因为同一个 SID_SRCStream() 数组可用于对 GetResultsSetResults 及类似方法的多个调用,调用方只需对调用之间的流进行细微改动即可。

Flags 参数指示返回的结果应使用什么数据类型表示。 它的值应该是下列值之一。

常量 Description
visGetFloats 0 以双精度 (VT_R8) 类型返回的结果。
visGetTruncatedInts 1 以截断的长整型 (VT_I4) 类型返回的结果。
visGetRoundedInts 2 以舍入的长整型 (VT_I4) 类型返回的结果。
visGetStrings 3 以字符串 (VT_BSTR) 类型返回的结果。
visGetFormulas 4 以字符串 (VT_BSTR) 类型返回的公式。
visGetFormulasU 5 以通用语法 (VT_BSTR) 表示的返回的公式。

UnitsNamesOrCodes() 参数是一个控制返回的各个结果以哪种度量单位表示的数组。 数组中的每一项都可以是一个字符串,如“inches”、“inch”、“in.”或“i”。 字符串可以用于所有受支持的 Visio 单位,如厘米、米、英里等。 您还可以使用由 Visio 类型库声明的整数常量(visCentimetersvisInches 等)来表示所需的单位。 注意,如果 FlagsvisGetFormulas,则在 UnitsNamesOrCodes() 数组中指定的值无效。

如果 UnitsNamesOrCodes () 不为 null,则应用程序希望它是 1 <= uVariants 的一维数组。 每一项可以是字符串或整数代码,也可以为空 (Nothing)。 如果 i 'th 条目为空,则返回的第 i 个结果以 UnitsNamesOrCodes (j) 指定的单位返回,其中 j 是最近非空条目的索引。 因此,如果您希望所有返回的值都以相同的单位表示,只需传递包含一项的 UnitsNamesOrCodes() 数组即可。 如果之前没有非空条目,或者未提供 UnitsNameOrCodes () 数组,则使用 visNumber (0x20) 。 这样就会返回内部单位(如 Cell 对象的 ResultIU 属性)。

如果 GetResults 方法成功,则结果将返回从零 (0) 到 n - 1 的一维变量数组。 返回的变体的类型是 Flags 的函数。 resultArray () 参数是由 GetResults 方法分配的 out 参数,该方法将所有权传回调用方。 调用方最终应对返回的数组执行 SafeArrayDestroy 。 请注意, SafeArrayDestroy 具有清除数组条目引用的变体的副作用,从而解除分配 GetResults 方法返回的任何字符串。 (Microsoft Visual Basic 和 Microsoft Visual Basic for Applications 自动执行此操作。

示例

以下示例演示如何使用 GetResults 方法。 该示例假定在一个活动页上至少有 3 个形状,并使用 GetResults 方法来获取形状 1 的宽度、形状 2 的高度和形状 3 的角度。 然后使用 SetResults 将形状 1 的宽度设置为形状 2 的高度,并将形状 2 的高度设置为形状 1 的宽度。

以下示例使用 Page 对象的 GetResults 方法获取 3 个单元格公式。 对于每个单元格,输入数组有 4 个段,Master 对象同样如此。 对于 StyleShape 对象,每个单元格只需要 3 个段(节、行和单元格)。

 
Public Sub GetResults_Example() 
 
 On Error GoTo HandleError 
 
 Dim intCounter As Integer 
 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 
 
 'Get first two values in inches. The second element in 
 'the units array is left uninitialized (empty) because we 
 'want the second result in the same units as the first 
 'result. The third result is initialized in degrees. Note that 
 'units can be expressed as a string or an integer constant. 
 Dim avarUnits(1 To 3) As Variant 
 avarUnits(1) = "in." 
 avarUnits(3) = visDegrees 
 
 'Return results of cells as an array of floating point numbers. 
 Dim avarResults() As Variant 
 ActivePage.GetResults aintSheetSectionRowColumn, visGetFloats, _ 
 avarUnits, avarResults 
 
 For intCounter = 0 To 3 
 Debug.Print avarResults(intCounter) 
 Next 
 
 Exit Sub 
 
HandleError: 
 MsgBox "Error" 
 Exit Sub 
 
End Sub

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。