Compartilhar via


Método Shape.GetResults (Visio)

Obtém os resultados ou fórmulas de várias células.

Sintaxe

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

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 consultadas.
Flags Obrigatório Integer Sinalizadores que influenciam o tipo de entradas retornadas nos resultados.
UnitsNamesOrCodes() Obrigatório Variantes Uma matriz de unidades de medida nas quais os resultados devem ser retornados.
resultArray() Obrigatório Variantes Parâmetro externo. Uma matriz que recebe os resultados ou as fórmulas das células consultadas.

Valor de retorno

Nada

Comentários

O método GetResults é como a propriedade Result para o objeto Cell, exceto que ele pode ser usado para obter 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 GetResults para obter resultados de qualquer conjunto de células.

SID_SRCStream() é uma matriz de números inteiros de 2 bytes. Para objetos Shape , SID_SRCStream() deve ser uma matriz unidimensional de 3 n 2 bytes inteiros para n>= 1. O método GetResults interpreta SID_SRCStream() 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.

O argumento Flags indica em quais tipos de dados os resultados devem ser expressos. Seu valor deve ser um dos seguintes.

Constant Valor Descrição
visGetFloats 0 Resultados retornados como duplas (VT_R8).
visGetTruncatedInts 1 Resultados retornados como números inteiros longos truncados (VT_I4).
visGetRoundedInts 2 Resultados retornados como números inteiros longos arredondados (VT_I4).
visGetStrings 3 Resultados retornados como sequências de caracteres (VT_BSTR).
visGetFormulas 4 Fórmulas retornadas como sequências de caracteres (VT_BSTR).
visGetFormulasU 5 Fórmulas retornadas em sintaxe universal (VT_BSTR).

O parâmetro UnitsNamesOrCodes() é uma matriz que controla em quais unidades de medida resultados individuais são retornados. 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 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 etc.) declaradas pela biblioteca de tipos do Visio. Observe que os valores especificados na matriz UnitsNamesOrCodes() não terão efeito se Flags for visGetFormulas.

Se UnitsNamesOrCodes não for nulo, o aplicativo espera que ele seja uma matriz unidimensional de 1 <= uVariants. 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, o resultado i 'th retornado será retornado nas unidades designadas por UnitsNamesOrCodes(j), onde j é o índice da entrada anterior não vazia mais recente. Assim, se desejar que todos os valores retornados estejam nas mesmas unidades, você precisará apenas passar uma matriz UnitsNamesOrCodes() com uma entrada. Se não houver nenhuma entrada anterior não vazia ou se nenhuma matriz UnitsNameOrCodes() for fornecida, visNumber (0x20) será usado. Isso faz unidades internas (como a propriedade ResultIU de um objeto Cell) serem retornadas.

Se o método GetResults obtiver êxito, os resultados retornarão uma matriz unidimensional com n variantes indexadas de zero (0) a n - 1. O tipo de variantes retornadas é uma função de Flags. resultArray() é um parâmetro externo alocado pelo método GetResults, que passa a propriedade de volta ao chamador. Por fim, o chamador deve executar SafeArrayDestroy na matriz retornada. Observe que SafeArrayDestroy possui o efeito colateral de limpar as variantes referenciadas pelas entradas da matriz, desfazendo assim a alocação das sequências de caracteres que o método GetResults retorna. (O Microsoft Visual Basic e o Microsoft Visual Basic for Applications cuidam disso para você.)

Exemplo

O exemplo a seguir mostra como usar o método GetResults. 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.

Este exemplo usa o método GetResults do objeto Page para obter três fórmulas de células. 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 seriam necessários para cada célula (seção, linha e célula).

 
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

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.