Метод Style.SetResults (Visio)

Задает результаты или формулы одной или нескольких ячеек.

Синтаксис

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

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

Параметры

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

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

Целое число

Примечания

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

Для объектов Style можно использовать метод SetResults , чтобы задать результаты любого набора ячеек. Вы сообщаете методу SetResults , какие ячейки нужно задать, передавая массив целочисленных значений в SID_SRCStream(). SID_SRCStream() — одномерный массив двухбайтовых целых чисел.

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

{sectionIdx, rowIdx, cellIdx }n

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

Массив UnitsNamesOrCodes() определяет, в каких единицах измерения содержатся отдельные записи в результатах. Каждая запись в массиве может быть строкой, например "inches", "inch", "in." или "i". Строки можно использовать для всех поддерживаемых единиц Microsoft Office Visio, таких как сантиметры, метры, мили и так далее. Можно также указать нужные единицы с помощью целочисленных констант (visСантиметры, visInches и т. д.), объявленных библиотекой типов Visio в VisUnitCodes. Список констант, используемых для единиц измерения, см. в статье О единицах измерения. Обратите внимание, что значения, указанные в массиве UnitsNamesOrCodes(), не действуют, если в флагах установлен visSetFormulas.

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

Параметр resultArray() должен быть одномерным массивом из вариантов 1 <= m . Результат может быть передан в виде двойной точности, целого числа, строки или ссылки на строку. Строки допустимы, только если в флагах задан параметр visSetFormulas, и в этом случае строки интерпретируются как формулы. Если resultArray(i) пуст, то i'й ячейке будет установлено значение resultArray(j), где j — индекс самой последней предшествующей записи, которая не является пустой. Если нет предварительной записи, которая не является пустой, соответствующая ячейка не изменяется. Если указано меньше результатов, чем ячеек (если m < n ), i'й ячейке, i < m , будет присвоено то же значение, что и m'й ячейке. Таким образом, чтобы задать одно значение во многих ячейках, нужно передать только одну копию значения.

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

Константа Значение Описание
visSetFormulas &H1 Трактуйте строки в результатах как формулы.
visSetBlastGuards &H2 Переопределять текущие значения ячеек, даже если они защищены.
visSetTestCircular &H4 Тест на установление циклических ссылок на ячейки.
visSetUniversalSyntax &H8 Формулы имеют универсальный синтаксис

Значение, возвращаемое методом SetResults , представляет собой число записей в SID_SRCStream(), которые были успешно обработаны. Если i < n записей обработаны правильно, но возникает ошибка на i + 1-й записи, метод SetResults создает исключение и возвращает i. В противном случае возвращается n .

Пример

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

В этом примере метод GetResults объекта Page используется для получения формул из трех ячеек и метод SetResults того же объекта для задания формул. Входной массив имеет 4 слота для каждой ячейки, как и для объектов Master . Для объектов Shape или Style для каждой ячейки (секции, строки и ячейки) требуется только 3 слота.

 
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

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.