SetResults メソッド (Visio)Shape.SetResults method (Visio)

1 つまたは複数のセルの結果や数式を設定します。Sets the results or formulas of one or more cells.

構文Syntax

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

Shape オブジェクトを表す変数を取得します。expression A variable that represents a Shape object.

パラメーターParameters

名前Name 必須 / オプションRequired/Optional データ型Data type 説明Description
SID_SRCStream()SID_SRCStream() 必須Required 整数型 (Integer)Integer 変更するセルを識別する配列です。An array identifying cells to be modified.
コードを単位とする ()UnitsNamesOrCodes() 必須Required VariantVariant 結果の配列エントリに適用する単位です。Measurement units to be attributed to entries in results array.
resultArray()resultArray() 必須Required VariantVariant 出力パラメーターです。Out parameter. 識別されたセルに割り当てる結果または数式です。Results or formulas to be assigned to identified cells.
FlagsFlags 必須Required 整数型 (Integer)Integer SetResultsの動作を制御するフラグです。Flags that influence the behavior of SetResults.

戻り値Return value

整数Integer

解説Remarks

SetResultsメソッドは、 CellオブジェクトのResultメソッドに似ていますが、一度に1つのセルではなく、複数のセルの結果 (値) を設定するために使用できる点が異なります。The SetResults method is like the Result method of a Cell object, except that it can be used to set the results (values) of many cells at once, rather than one cell at a time.

Shapeオブジェクトでは、 SetResultsメソッドを使用して、任意のセルのセットの結果を設定できます。For Shape objects, you can use the SetResults method to set results of any set of cells. SetResults メソッドで SID_SRCStream() に整数の配列を渡すことにより、設定するセルを指定します。You tell the SetResults method which cells you want to set by passing an array of integers in SID_SRCStream(). SID_SRCStream() は 2 バイトの整数で構成される 1 次元配列です。SID_SRCStream() is a one-dimensional array of 2-byte integers.

Shapeオブジェクトの場合、 SID_SRCStream () は、 n >= 1 の 3 n 2 バイト整数の1次元配列である必要があります。For Shape objects, SID_SRCStream() should be a one-dimensional array of 3 n 2-byte integers for n >= 1. SetResults メソッドはストリームを次のように解釈します。The SetResults method interprets the stream as:

{sectionIdx, rowIdx, cellIdx }n

_Sectionidx_は目的のセルのセクションインデックス、 _rowIdx_は行インデックス、 _cellidx_はセルのインデックスです。where sectionIdx is the section index of the desired cell, rowIdx is its row index, and cellIdx is its cell index.

Unit Namesorコード () 配列は、結果の個々のエントリの測定単位を制御します。The UnitsNamesOrCodes() array controls what measurement units individual entries in results are in. この配列の各エントリには、"inches"、"inch"、"in"、"i" などの文字列が格納されます。Each entry in the array can be a string such as "inches", "inch", "in.", or "i". センチメートル、メートル、マイルなど、Visio がサポートしているすべての単位の文字列を使用できます。Strings may be used for all supported Microsoft Office Visio units such as centimeters, meters, miles, and so on. VisUnitCodes の Visio タイプ ライブラリで宣言されている整数の定数 (visCentimetersvisInches など) を使用して、必要な単位を指定することもできます。You can also indicate desired units with integer constants (visCentimeters, visInches, and so on) declared by the Visio type library in VisUnitCodes. 測定単位に使用される定数の一覧については、「測定単位について」を参照してください。For a list of constants used for units of measure, see About units of measure. VisSetFormulasが_Flags_で設定され__ ている場合、指定された値は、指定した値には影響しないことに注意してください。Note that the values specified in the UnitsNamesOrCodes() array have no effect if visSetFormulas is set in Flags.

指定した_単位の Namesorコード ()_ が空でない場合は、1次元配列の 1 <= u variant となることが予想されます。If UnitsNamesOrCodes() is not empty, we expect it to be a one-dimensional array of 1 <= u variants. 各エントリには、文字列または整数コード、あるいは空 (nothing) のいずれかを指定できます。Each entry can be a string or integer code, or empty (nothing). _I_番目のエントリが空の場合、 __ __ _resultArray_の_i_番目のエントリは、指定された単位であることを示します。ここで、 _j_は、空ではない最後のエントリです。If the 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. したがって、 resultArray_内のすべてのエントリを同じ単位で解釈するには、1つのエントリを持つ、Unit namesorコード () 配列のみを渡す必要があります。Thus, if you want all entries in resultArray to be interpreted in the same units, you need only pass a UnitsNamesOrCodes() array that has one entry. 空でない前のエントリが存在しない場合、または、指定された_単位の Namesorコード () 配列が指定されていない場合は、 visNumber (0x20) が使用されます。If there is no prior entry that is not empty, or if no UnitsNamesOrCodes() array is supplied, visNumber (0x20) will be used. これにより、アプリケーションが既定の内部単位 ( Cellオブジェクトのresultiuプロパティの場合) になります。This causes the application to default to internal units (as does the ResultIU property of a Cell object).

ResultArray () パラメーターは、1 <= m variant の1次元配列である必要があります。The resultArray() parameter should be a one-dimensional array of 1 <= m variants. Result は、 DoubleIntegerstring、または文字列への参照として渡すことができます。A result can be passed as Double, Integer, String, or a reference to a String. 文字列は、 visSetFormulasが_Flags_で設定されている場合にのみ受け入れられます。この場合、文字列は数式として解釈されます。Strings are accepted only if visSetFormulas is set in Flags, in which case strings are interpreted as formulas. ResultArray (i) が空の場合、 i_の th セルは_resultArray (j) の値に設定されます。ここで、 _j_は、空ではない最後のエントリのインデックスです。If resultArray(i) is empty, the i 'th cell will be set to the value in resultArray(j), where j is the index of the most recent prior entry that is not empty. 空でない前のエントリがない場合、対応するセルは変更されません。If there is no prior entry that is not empty, the corresponding cell is not altered. セル ( m < n ) よりも少ない結果が返された場合は、 _i_番目のセル_i < m_は、 m ' th セルと同じ値に設定されます。If fewer results than cells are specified (if m < n ), the i 'th cell, i < m , will be set to the same value as the m 'th cell. したがって、多数のセルを同じ値に設定するには、値の1つのコピーのみを渡す必要があります。Thus, to set many cells to the same value, you need only pass one copy of the value.

_Flags_パラメーターには、次の値のビットマスクを指定する必要があります。The Flags parameter should be a bitmask of the following values.

定数Constant Value 説明Description
visSetFormulasvisSetFormulas &H1&H1 結果の文字列を数式として処理します。Treat strings in results as formulas.
visSetBlastGuardsvisSetBlastGuards &H2&H2 保護されている場合でも、現在のセルの値を上書きします。Override present cell values even if they're guarded.
visSetTestCircularvisSetTestCircular &H4&H4 循環セル参照の設定をテストします。Test for establishment of circular cell references.
visSetUniversalSyntaxvisSetUniversalSyntax &H8&H8 数式を汎用構文で指定します。Formulas are in universal syntax

SetResultsメソッドによって返される値は、正常に処理された_SID_SRCStream ()_ 内のエントリの数です。The value returned by the SetResults method is the number of entries in SID_SRCStream() that were successfully processed. i <n 個のエントリが正常に処理され、i + 1 番目のエントリでエラーが発生した場合、SetResults メソッドで例外が発生し、i が返されます。If i < n entries are processed correctly, but an error occurs on the i + 1st entry, the SetResults method raises an exception and returns i. それ以外の場合は、n が返されます。Otherwise, n is returned.

Example

次の例は、 SetResultsメソッドの使用方法を示しています。The following example shows how to use the SetResults method. この例では、少なくとも 3 個の図形を含むアクティブ ページがあることが前提となっています。This example assumes there is an active page that has at least 3 shapes on it. GetResults メソッドを使用して図形 1 の幅、図形 2 の高さ、および図形 3 の角度を取得します。It uses the GetResults method to get the width of shape 1, the height of shape 2, and the angle of shape 3. 次に、 SetResultsを使用して、図形1の幅を図形2の高さに、図形2の高さを図形1の幅に設定します。図形3の角度は変更されません。It then uses SetResults to set the width of shape 1 to the height of shape 2 and the height of shape 2 to the width of shape 1.The angle of shape 3 is left unaltered.

次の使用例は、 PageオブジェクトのGetResultsメソッドを使用して、3つのセルの数式を取得し、同じオブジェクトのSetResultsメソッドを使用して数式を設定します。This example uses the GetResults method of the Page object to get 3 cell formulas and the SetResults method of the same object to set the formulas. 入力配列は、Master オブジェクトと同様に各セルの 4 個のスロットを持ちます。The input array has 4 slots for each cell, as it also would for Master objects. Shape オブジェクトまたは Style オブジェクトに対しては、各セル (セクション、行、およびセル) に 3 個のスロットがあれば十分です。For Shape or Style objects, only 3 slots are needed for each cell (section, row, and cell).

 
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

サポートとフィードバックSupport and feedback

Office VBA またはこの説明書に関するご質問やフィードバックがありますか?Have questions or feedback about Office VBA or this documentation? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.