Compartilhar via


Shape.SetResults method (Visio) (Método Shape.SetResults [Visio])

Define os resultados ou as fórmulas de uma ou mais células.

Sintaxe

expression. SetResults( _SRCStream()_ , _UnitsNamesOrCodes()_ , _resultArray()_ , _Flags_ )

expressão Uma variável que representa um objeto Shape.

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
SID_SRCStream() Obrigatório Integer Uma matriz que identifica as células a serem modificadas.
UnitsNamesOrCodes() Obrigatório Variant Unidades de medida a serem atribuídas às entradas na matriz de resultados.
resultArray() Obrigatório Variant Parâmetro externo. Resultados ou fórmulas a serem atribuídos às células identificadas.
Flags Obrigatório Integer Sinalizadores que influenciam o comportamento de SetResults.

Valor de retorno

Número inteiro

Comentários

O método SetResults é como o método Result de um objeto Cell, exceto que ele pode ser usado para definir os resultados (valores) de várias células de uma vez, em vez de uma célula por vez.

Para objetos Shape, você pode usar o método SetResults para definir resultados de qualquer conjunto de células. Informe o método SetResults sobre quais células deseja definir passando uma matriz de números inteiros em SID_SRCStream(). SID_SRCStream() é uma matriz unidimensional de números inteiros de 2 bytes.

Para objetos de Forma , SID_SRCStream() deve ser uma matriz unidimensional de 3 n números inteiros de 2 bytes para n>= 1. O método SetResults interpreta o fluxo como:

{sectionIdx, rowIdx, cellIdx }n

onde sectionIdx é o índice da seção da célula desejada, rowIdx é seu índice de linha e cellIdx é seu índice de célula.

A matriz UnitsNamesOrCodes() controla em quais unidades de medida estarão entradas individuais em resultados. Cada entrada na matriz pode ser uma sequência de caracteres como "polegadas", "polegada", "pol." ou "p". As sequências de caracteres podem ser usadas para todas as unidades do Microsoft Office Visio com suporte, como centímetros, metros, milhas e assim por diante. Você também pode indicar as unidades desejadas com constantes de números inteiros (visCentimeters, visInches e assim por diante) declaradas pela biblioteca de tipos do Visio em VisUnitCodes. Para obter uma lista das constantes utilizadas para unidades de medida, veja Acerca das unidades de medida. Observe que os valores especificados na matriz UnitsNamesOrCodes() não terão efeito se visSetFormulas for definido em Flags.

Se UnitsNamesOrCodes() não estiver vazio, esperamos que seja uma matriz unidimensional de 1 <= variantes u . Cada entrada pode ser um código de número inteiro ou sequência de caracteres, ou vazio (nada). Se a i 'th entry is empty, the i 'th entry in resultArray is in the units designated by UnitsNamesOrCodes()(j) , where j is the most recent prior entry that is not empty. Assim, se quiser que todas as entradas em resultArray sejam interpretadas nas mesmas unidades, só precisa de transmitir uma matriz UnitsNamesOrCodes() que tenha uma entrada. Se não houver uma entrada anterior que não esteja vazia ou se nenhuma matriz UnitsNamesOrCodes() for fornecida, visNumber (0x20) será usada. Isto faz com que a aplicação predefina para unidades internas (tal como a propriedade ResultIU de um objeto Célula ).

O parâmetro resultArray() deve ser uma matriz unidimensional de 1 <= variantes de m . Um resultado pode ser passado como Double, Integer, String ou uma referência a uma String. Sequências de caracteres são aceitas apenas se visSetFormulas for definido em Flags; nesse caso as sequências de caracteres são interpretadas como fórmulas. Se resultArray(i) estiver vazio, a i 'th cell será definida como o valor em resultArray(j), em que j é o índice da entrada anterior mais recente que não está vazia. Se não houver uma entrada anterior que não esteja vazia, a célula correspondente não será alterada. Se forem especificados menos resultados do que as células (se m < n ), a célula i 'th, i < m , será definida como o mesmo valor que a célula m'th . Assim, para definir várias células como o mesmo valor, você precisa apenas passar uma cópia do valor.

O parâmetro Flags deve ser uma bitmask dos valores a seguir.

Constant Valor Descrição
visSetFormulas &H1 Trata as sequências de caracteres nos resultados como fórmulas.
visSetBlastGuards &H2 Substitui os valores das células presentes mesmo que estejam protegidas.
visSetTestCircular &H4 Testa o estabelecimento de referências de células circulares.
visSetUniversalSyntax &H8 As fórmulas estão em sintaxe universal.

O valor retornado pelo método SetResults é o número de entradas em SID_SRCStream() que foram processadas com êxito. Se as entradas i < n forem processadas corretamente, mas ocorrer um erro na entrada i + 1ª, o método SetResults gera uma exceção e devolve i. Caso contrário, n será retornado.

Exemplo

O exemplo seguinte mostra como utilizar o método SetResults . Esse exemplo presume que haja uma página ativa com pelo menos três formas. Ele usa o método GetResults para obter a largura da forma 1, a altura da forma 2 e o ângulo da forma 3. Em seguida, utiliza SetResults para definir a largura da forma 1 para a altura da forma 2 e a altura da forma 2 para a largura da forma 1.O ângulo da forma 3 é deixado indeterminado.

Este exemplo usa o método GetResults do objeto Page para obter três fórmulas de células e o método SetResults do mesmo objeto para definir as fórmulas. A matriz de entrada tem quatro slots para cada célula, como também teria para objetos Master. Para objetos Shape ou Style, apenas três slots são necessários para cada célula (seção, linha e célula).

 
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

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.