Поделиться через


Метод Shape.GetResults (Visio)

Возвращает результаты или формулы многих ячеек.

Синтаксис

выражение. GetResults( _SRCStream()_ , _Flags_ , _UnitsNamesOrCodes()_ , _resultArray()_ )

Выражение Переменная, представляющая объект Shape .

Параметры

Имя Обязательный или необязательный Тип данных Описание
SID_SRCStream() Обязательный Integer Массив, определяющий ячейки для запроса.
Flags Обязательный Integer Флаги, влияющие на тип записей, возвращаемых в результатах.
UnitsNamesOrCodes() Обязательный Variant Массив единиц измерения, в которых должны быть возвращены результаты.
resultArray() Обязательный Variant Параметр Out. Массив, получающий результаты или формулы запрашиваемых ячеек.

Возвращаемое значение

Отсутствует

Примечания

Метод GetResults похож на свойство Result для объекта Cell , за исключением того, что его можно использовать для получения результатов (значений) нескольких ячеек одновременно, а не одной ячейки за раз.

Для объектов Shape можно использовать метод GetResults для получения результатов любого набора ячеек.

SID_SRCStream() — это массив из 2-байтовых целых чисел. Для объектов ShapeSID_SRCStream() должен быть одномерным массивом из 3 n 2-байтовых целых чисел для n>= 1. Метод GetResults интерпретирует SID_SRCStream() как:

{sectionIdx, rowIdx, cellIdx }n

где sectionIdx — это индекс раздела нужной ячейки, rowIdx — индекс строки, а cellIdx — индекс ячейки.

Аргумент Flags указывает, в каком типе данных должны быть выражены возвращаемые результаты. Его значение должно иметь одно из следующих значений.

Константа Значение Описание
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() — это массив, который определяет, в каких единицах измерения возвращаются отдельные результаты. Каждая запись в массиве может быть строкой, например "дюймов", "дюйм", "in." или "i". Строки можно использовать для всех поддерживаемых единиц Visio, таких как сантиметры, метры, мили и т. д. Вы также можете указать нужные единицы с целыми константами (visCentimeters, visInches и т. д.), объявленными библиотекой типов Visio. Обратите внимание, что значения, указанные в массиве UnitsNamesOrCodes(), не оказывают влияния, если flags имеет значение visGetFormulas.

Если значение UnitsNamesOrCodes не равно NULL, приложение ожидает, что это одномерный массив, равный 1 <= uVariants. Каждая запись может быть строковым или целочисленным кодом или пустой (ничего). Если запись i 'th пуста, i 'th возвращенный результат возвращается в единицах, указанных unitsNamesOrCodes(j), где j — индекс последней предыдущей непустой записи. Таким образом, если требуется, чтобы все возвращаемые значения были в одинаковых единицах, необходимо передать только массив UnitsNamesOrCodes() с одной записью. Если ранее не пустая запись отсутствует или массив UnitsNameOrCodes() не указан, используется visNumber (0x20). Это приводит к возврату внутренних единиц (например, свойства ResultIU объекта Cell ).

Если метод GetResults завершается успешно, результаты возвращают одномерный массив из n вариантов, индексируемых от нуля (0) до n - 1. Тип возвращаемых вариантов является функцией Flags. Параметр resultArray() — это параметр out, выделенный методом GetResults , который передает владение вызывающей стороне. В конечном итоге вызывающий объект должен выполнить safeArrayDe в возвращаемом массиве. Обратите внимание, что safeArrayDeties имеет побочный эффект очистки вариантов, на которые ссылаются записи массива, что позволяет освободить все строки, возвращаемые методом GetResults . (Microsoft Visual Basic и Microsoft Visual Basic для приложений позаботиться об этом за вас.)

Пример

В следующем примере показано, как использовать метод GetResults . В этом примере предполагается, что есть активная страница, на ней есть по крайней мере 3 фигуры. Метод GetResults используется для получения ширины фигуры 1, высоты фигуры 2 и угла фигуры 3.

В этом примере используется метод GetResults объекта Page для получения формул 3 ячеек. Входной массив имеет 4 слота для каждой ячейки, как и для объектов Master . Для объектов Shape или Style для каждой ячейки (раздел, строка и ячейка) потребуется только 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 и обратная связь.