Compartilhar via


Método Master.SetResults (Visio)

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

Sintaxe

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

Expressão Uma variável que representa um objeto Mestre .

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 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 Master, você pode usar o método SetResults para definir resultados de qualquer conjunto de células em qualquer conjunto de formas da página ou mestre. Você informa ao método SetResults quais células você deseja definir passando uma matriz de inteiros em _SID_SRCStream(). SID_SRCStream() é uma matriz unidimensional de números inteiros de 2 bytes.

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

{sheetID, sectionIdx, rowIdx, cellIdx }n

onde sheetID é a propriedade ID do objeto Shape na página ou mestre cujo resultado de célula deve ser modificado.

Se sheetID em uma entrada for visInvalShapeID (-1) ou se o byte inferior de sectionIdx for visSectionInval (255), a entrada será ignorada pelo método SetResults. O motivo para isso é que a mesma matriz SID_SRCStream() pode ser usada em várias chamadas para SetResults, GetResults e métodos semelhantes, sendo necessário apenas que o chamador faça alterações mínimas no fluxo entre chamadas.

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 de constantes usadas para unidades de medida, consulte Sobre 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 <= u variants. Cada entrada pode ser um código de número inteiro ou sequência de caracteres, ou vazio (nada). Se a entrada i 'th estiver vazia, a entrada i 'th em resultArray() estará nas unidades designadas por UnitsNamesOrCodes(j), onde j é a entrada anterior mais recente que não está vazia. Assim, se desejar que todas as entradas em resultArray() sejam interpretadas nas mesmas unidades, você precisará apenas passar uma matriz UnitsNamesOrCodes() com 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. Isso faz com que o aplicativo seja padrão para unidades internas (assim como a propriedade ResultIU de um objeto Cell ).

O parâmetro resultArray() deve ser uma matriz unidimensional de 1 <= m variants. 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 vazia, a célula i 'th 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 menos resultados do que as células forem especificados (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 i + 1ª entrada, o método SetResults gerará uma exceção e retornará i. Caso contrário, n será retornado.

Exemplo

O exemplo a seguir mostra como usar 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, ele usa 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 sem alteração.

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.