Méthode Page.SetResults (Visio)
Détermine les résultats ou les formules d’une ou plusieurs cellules.
Syntaxe
expression. SetResults
( _SID_SRCStream()_
, _UnitsNamesOrCodes()_
, _resultArray()_
, _Flags_
)
Expression Variable qui représente un objet Page .
Paramètres
Nom | Requis/Facultatif | Type de données | Description |
---|---|---|---|
SID_SRCStream() | Obligatoire | Integer | Tableau qui identifie les cellules à modifier. |
UnitsNamesOrCodes() | Obligatoire | Variant | Unités de mesure à attribuer aux entrées du tableau de résultats. |
resultArray() | Obligatoire | Variant | Résultats ou formules à attribuer aux cellules identifiées. |
Flags | Obligatoire | Integer | Indicateurs influençant le comportement de SetResults. |
Valeur renvoyée
Entier
Remarques
La méthode SetResults est comparable à la méthode Result d'un objet Cell, à la différence qu'elle peut être utilisée pour définir les résultats (valeurs) de plusieurs cellules simultanément, plutôt qu'une à la fois.
S'il s'agit d'objets Page, il est possible d'utiliser la méthode SetResults pour déterminer les résultats d'un jeu de cellules quelconque dans n'importe quel jeu de formes de la page ou de la forme de base.
Vous indiquez à la méthode SetResults quelles cellules vous souhaitez définir en transmettant un tableau d’entiers dans _SID_SRCStream(). SID_FluxSRC() est un tableau à une dimension d'entiers de 2 octets.
Pour les objets Page , SID_SRCStream() doit être un tableau unidimensionnel de 4 n entiers de 2 octets pour n>= 1. La méthode SetResults interprète le flux comme suit :
{sheetID, sectionIdx, rowIdx, cellIdx }n
où IDFeuille est la propriété ID de l'objet Shape dans la page ou la forme de base dont le résultat de cellule doit être modifié.
Si IDFeuille dans une entrée a la valeur visInvalShapeID (-1) ou si l'octet inférieur de IdxSection a la valeur visSectionInval (255), l'entrée est ignorée par la méthode SetResults. La raison est que le même tableau SID_FluxSRC() peut être utilisé pour plusieurs appels de SetResults, GetResults et méthodes similaires avec l'appelant n'ayant besoin d'apporter que des modifications mineures au flux entre les appels.
Le tableau NomsUnitésOuCodes() contrôle les unités de mesure des entrées individuelles exprimées en résultats. Chaque entrée du tableau peut être une chaîne telle que « pouces », « pouce », « po » ou « p ». Toutes les unités prises en charge par Microsoft Office Visio, comme le centimètre, le mètre, le mile, etc., peuvent être utilisées. Vous pouvez également indiquer les unités à l’aide des constantes d’entier (visCentimeters, visInches, etc.) déclarées par la bibliothèque de types de Visio dans VisUnitCodes. Pour obtenir la liste des constantes utilisées pour les unités de mesure, consultez À propos des unités de mesure. Les valeurs indiquées dans le tableau NomsUnitésOuCodes() n’ont aucun effet si visSetFormulas est défini sur Indicateurs.
Si UnitsNamesOrCodes() n’est pas vide, nous pensons qu’il s’agit d’un tableau unidimensionnel de 1 <= variantes u . Chaque entrée peut être une chaîne, un code entier ou vide (nothing). Si l’entrée i 'ième est vide, la i 'ième entrée dans resultArray() se trouve dans les unités désignées par units(j), où j est l’entrée précédente la plus récente qui n’est pas vide. Ainsi, si vous souhaitez que toutes les entrées de TableauRésultats() soient interprétées dans les mêmes unités, vous ne devez transmettre qu'un tableau NomsUnitésOuCodes() comportant une seule entrée. S'il n'existe pas d'entrée précédente non vide ou si aucun tableau unités n'a été fourni, la valeur visNumber (0x20) est utilisée. Cela entraîne la valeur par défaut de l’application sur les unités internes (tout comme la propriété ResultIU d’un objet Cell ).
Le paramètre resultArray() doit être un tableau unidimensionnel de 1 <= m variantes. Un résultat peut être transmis sous forme de valeurs de type Double, Integer, String ou de références à une String. Les chaînes ne sont acceptées que si visSetFormulas est défini sur Indicateurs, auquel cas les chaînes sont interprétées comme des formules. Si resultArray(i) est vide, la i 'ième cellule est définie sur la valeur dans resultArray(j), où j est l’index de l’entrée précédente la plus récente qui n’est pas vide. S'il n'existe pas d'entrée précédente non vide, la cellule correspondante n'est pas modifiée. Si moins de résultats que les cellules sont spécifiés (si m < n ), la i 'ième cellule, i < m , est définie sur la même valeur que la cellule m 'th. Ainsi, pour définir plusieurs cellules sur la même valeur, il vous suffit de transmettre une copie de cette valeur.
Le paramètre Indicateurs doit être un masque binaire composé des valeurs suivantes.
Constante | Valeur | Description |
---|---|---|
visSetFormulas | &H1 | Traite les chaînes de résultats comme des formules. |
visSetBlastGuards | &H2 | Remplace les valeurs de cellule actuelles même si elles sont protégées. |
visSetTestCircular | &H4 | Teste l'existence de références de cellule circulaires. |
visSetUniversalSyntax | &H8 | Les formules sont en syntaxe universelle |
La valeur renvoyée par la méthode SetResults est le nombre d'entrées dans SID_FluxSRC() dont le traitement a réussi. Si les entrées i < n sont traitées correctement, mais qu’une erreur se produit sur l’entrée i + 1ère, la méthode SetResults déclenche une exception et retourne i. Dans le cas contraire, n est renvoyé.
Exemple
L’exemple suivant montre comment utiliser la méthode SetResults . Il implique qu'une page active comporte au moins trois formes. Il utilise la méthode GetResults pour obtenir la largeur de la forme 1, la hauteur de la forme 2 et l'angle de la forme 3. Il utilise ensuite SetResults pour définir la largeur de la forme 1 sur la hauteur de la forme 2 et la hauteur de la forme 2 sur la largeur de la forme 1.L’angle de la forme 3 reste inchangé.
Cet exemple utilise la méthode GetResults de l'objet Page pour obtenir 3 formules de cellule et la méthode SetResults du même objet pour définir les formules. Le tableau d'entrée comporte 4 cases par cellule, comme si vous utilisiez des objets Master. Pour les objets Shape ou Style, seules 3 cases par cellule suffisent (section, ligne et cellule).
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
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.