Compartir a través de


Método Page.SetResults (Visio)

Establece los resultados o las fórmulas de una o varias celdas.

Sintaxis

expresión. SetResults( _SID_SRCStream()_ , _UnitsNamesOrCodes()_ , _resultArray()_ , _Flags_ )

Expresión Variable que representa un objeto Page .

Parameters

Nombre Obligatorio/opcional Tipo de datos Descripción
SID_SRCStream() Obligatorio Integer Matriz que identifica las celdas que se desean modificar.
UnitsNamesOrCodes() Obligatorio Variant Unidades de medida en que se expresarán las entradas de la matriz de resultados.
resultArray() Obligatorio Variant Resultados o fórmulas que se desean asignar a las celdas identificadas.
Flags Obligatorio Integer Marcas que influyen en el comportamiento de SetResults.

Valor devuelto

Entero

Observaciones

El método SetResults es similar al método Result de un objeto Cell, pero difiere en que se puede utilizar para establecer los resultados (valores) de varias celdas al mismo tiempo, en lugar de hacerlo de una en una.

En los objetos Page, puede utilizar el método SetResults para establecer los resultados de cualquier conjunto de celdas de cualquier conjunto de formas de la página o del patrón.

Indique al método SetResults qué celdas desea establecer pasando una matriz de enteros en _SID_SRCStream(). SID_SRCStream() es una matriz unidimensional de enteros de 2 bytes.

Para los objetos Page , SID_SRCStream() debe ser una matriz unidimensional de 4 n enteros de 2 bytes para n>= 1. El método SetResults interpreta la secuencia como:

{sheetID, sectionIdx, rowIdx, cellIdx }n

donde sheetID es la propiedad ID del objeto Shape de la página o el patrón cuyo resultado de celda se desea modificar.

Si sheetID en una entrada es visInvalShapeID (-1) o si el byte de menor peso de sectionIdx es visSectionInval (255), el método SetResults omite dicha entrada. La razón para esto es que se puede utilizar la misma matriz SID_SRCStream en varias llamadas a los métodos SetResults, GetResults y similares; el llamador sólo necesitará realizar pequeñas modificaciones a la secuencia entre llamadas.

La matriz UnitsNamesOrCodes() controla en qué unidades de medida se encuentran entradas individuales en los resultados. Cada entrada de la matriz puede ser una cadena como "pulgadas", "pulgada", "in", o "i". Las cadenas se pueden usar para todas las unidades admitidas de Microsoft Office Visio, como centímetros, metros, millas, etc. También puede indicar las unidades deseadas con constantes de entero (visCentimeters, visInches, etc.) declaradas por la biblioteca de tipos de Visio en VisUnitCodes. Para obtener una lista de las constantes usadas para las unidades de medida, vea Acerca de las unidades de medida. Tenga en cuenta que los valores especificados en la matriz UnitsNamesOrCodes() no tienen ningún efecto si visSetFormulas está establecido en Flags.

Si UnitsNamesOrCodes() no está vacío, esperamos que sea una matriz unidimensional de 1 <= u variants. Cada entrada puede ser un código de cadena o de entero, o estar vacía (Nothing). Si la entrada i 'th está vacía, la entrada i 'th en resultArray() se encuentra en las unidades designadas por units(j) , donde j es la entrada anterior más reciente que no está vacía. De este modo, si desea que todas las entradas de resultArray() se interpreten en las mismas unidades, sólo necesita pasar una matriz UnitsNamesOrCodes() que tenga una entrada. Si no hay ninguna entrada previa no vacía, o si no se proporciona ninguna matriz se proporciona ninguna matriz units, se utilizará visNumber (0x20). Esto hace que la aplicación tenga como valor predeterminado unidades internas (al igual que la propiedad ResultIU de un objeto Cell ).

El parámetro resultArray() debe ser una matriz unidimensional de 1 <= m variants. Los resultados se pueden pasar como Double, Integer, String o como una referencia a un valor de tipo String. Sólo se aceptan cadenas si visSetFormulas se establece en Flags, en cuyo caso las cadenas se interpretan como fórmulas. Si resultArray(i) está vacío, la celda i 'th se establecerá en el valor de resultArray(j), donde j es el índice de la entrada anterior más reciente que no está vacía. Si no hay ninguna entrada previa no vacía, la celda correspondiente no se modifica. Si se especifican menos resultados que las celdas (si m < n ), la celda i 'th, i < m , se establecerá en el mismo valor que la celda m 'th. De esta manera, para establecer varias celdas en el mismo valor, sólo necesita pasar una copia de éste.

El parámetro Flags debe ser una máscara de bits de los valores siguientes.

Constante Valor Descripción
visSetFormulas &H1 Trata las cadenas de los resultados como fórmulas.
visSetBlastGuards &H2 Reemplaza los valores actuales de las celdas aunque estén protegidos.
visSetTestCircular &H4 Comprueba el establecimiento de referencias circulares a celdas.
visSetUniversalSyntax &H8 Las fórmulas se expresan en la sintaxis universal.

El valor devuelto por el método SetResults es el número de entradas de SID_SRCStream() que se han procesado correctamente. Si las entradas de i < n se procesan correctamente, pero se produce un error en la entrada i + 1, el método SetResults genera una excepción y devuelve i. De lo contrario, se devuelve n.

Ejemplo

En el ejemplo siguiente se muestra cómo usar el método SetResults . En este ejemplo se da por hecho que existe una página activa que tiene al menos tres formas. Utiliza el método GetResults para obtener el ancho de la forma 1, el alto de la forma 2 y el ángulo de la forma 3. A continuación, usa SetResults para establecer el ancho de la forma 1 en el alto de la forma 2 y el alto de la forma 2 en el ancho de la forma 1.El ángulo de la forma 3 se deja inalterado.

Este ejemplo utiliza el método GetResults del objeto Page para obtener tres fórmulas de celda y el método SetResults del mismo objeto para establecer dichas fórmulas. La matriz de entrada tiene 4 posiciones para cada celda, como en el caso de los objetos Master. En el caso de los objetos Shape o Style, sólo se necesitarían tres posiciones para cada celda (sección, fila y celda).

 
Public Sub Set Results_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 
 
 'Get the 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 
 
 'Use SetResults to: 
 
 ' - Set the width of shape 1 to the height of shape 2. 
 
 ' - Set the height of shape 2 to the width of shape 1. 
 
 'NOTE: avarResults() is indexed from 0 to 2. 
 
 Dim varTemp As variant 
 varTemp = avarResults(0) 
 avarResults(0) = avarResults(1) 
 avarResults(1) = varTemp 
 
 'Pass the same array back to SetResults that we 
 'just passed to GetResults, but leave the angle 
 'alone. By setting the sheet ID entry in the third 
 'slot of the aintSheetSectionRowColumn array to 
 'visInvalShapeID, we tell SetResults to ignore that slot. 
 aintSheetSectionRowColumn(9) = visInvalShapeID 
 
 'Set the results of the cells. 
 ActivePage.SetResults aintSheetSectionRowColumn, avarUnits, avarResults, 0 
 
 Exit Sub 
 
HandleError: 
 
 MsgBox "Error" 
 
 Exit Sub 
 
End Sub

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.