Changer la couleur d'arrière-dans LibreOffice
Je suis à l'aide de LibreOffice 3.5.4.2. Je voudrais changer la couleur de fond des cellules en fonction de diverses conditions. Comme un exemple minimal, j'ai la macro suivante de la fonction/définie:
function bgcolor()
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Doc = ThisComponent
Sheet = Doc.Sheets(1)
Cell = Sheet.getCellByPosition(0, 0)
REM Cell.CellBackColor = RGB(50,60,70)
bgcolor=Cell.CellBackColor
end function
Je exécuter la fonction en entrant =BGCOLOR()
dans une cellule. La cellule dans laquelle cette formule est présent renvoie la valeur de couleur de la première cellule (0,0)
ou A1
sur la feuille 1, comme prévu.
Cependant, je ne peux pas obtenir la fonction pour changer la couleur d'arrière-plan de la cellule A1
. La cellule de la couleur d'arrière-plan ne pas changer quand j'enlève le REM
ligne dans l'exemple ci-dessus pour ensemble la couleur d'arrière-plan.
Comment puis-je définir la couleur d'arrière-plan d'une cellule avec une fonction dans LibreOffice?
(J'ai lu sur l'utilisation de "styles", mais ne cherche pas plus loin parce que j'ai besoin de beaucoup de différentes couleurs de fond et n'a pas voulu faire de nombreux styles différents. Il est possible de modifier manuellement la couleur d'arrière-plan sans l'aide de styles, j'ai donc pensé qu'il serait possible de faire le même programme.)
CellBackColor
mais rien ne se passe dans la feuille. Avez-vous résolu votre problème par la suite? Des idées?OriginalL'auteur SabreWolfy | 2012-08-23
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, il n'y a rien de mal avec votre macro en général. La seule ligne pour définir le CellBackColor est correcte comme indiqué. Le problème est que la fonction est appelée à partir de la feuille que vous essayez de modifier. Une fonction n'est pas autorisé à modifier la feuille à partir de laquelle il est appelé. Donc, si vous appelez votre fonction à partir de la feuille 1 et essayez ensuite de modifier la couleur d'arrière-plan d'une cellule dans la feuille 1, qui sera un échec. Si, toutefois, vous avez tenté de modifier la couleur de fond de cellule sur la feuille de 0 lors de l'appel de la feuille 1, qui va fonctionner comme prévu.
À partir de wiki.openoffice.org/wiki/Documentation/OOo3_User_Guides/...: "Lorsqu'une macro est appelée comme une fonction Calc, la macro ne peut pas modifier n'importe quelle valeur dans la feuille à partir de laquelle la macro a été appelé."
Cependant, dans les versions plus récentes, il est possible de modifier les valeurs des cellules mais pas les attributs de la cellule sur la même feuille.
OriginalL'auteur Andrew
edit: Cela ne fonctionne qu'en lowriter. Grâce Campa.
REM
ligne dans mon exemple avec votre ligne, ou si votre ligne est séparée exemple. J'ai essayé les deux approches, mais cela n'a pas résolu le problème. Si je remplace la ligne dans mon exemple avec le vôtre, la cellule renvoie-1
.J'ai suggéré de remplacer le REM ligne. Mais je ne sais pas ce que Konrad édité. Peut-être qu'il n'est pas lisible. Conviendrait à certains bizarre logique dans LO. 🙂 api.libreoffice.org/docs/common/ref/com/sun/star/table/...
Vérifié mon propre macro pour les tables lowriter. Devraient travailler en localc. "Pour nRow = 0 À oTable.getRows().getCount() - 2 avec oTable.getrows().getByIndex(nRow) Si nRow MOD 2 = 1 Alors .BackColor = -1 Else .BackColor = RGB(192, 192, 192) fin Si Fin ... Suivant"
Votre solution proposée donne
BASIC Runtime error. Object variable not set
ERREUR.Pouvez-vous svp poster votre code? Sinon je ne peux que deviner: Vous avez utilisé la boucle sans réglage oTable?
OriginalL'auteur bdongus
la ligne doit être
(pas de "REM" il y a de sûr, qui crée de la juste ligne de commentaires)
considérer également le paramètre de feuilles à 0 au lieu de 1 si vous avez une seule feuille de
pour d'autres propriétés intéressantes, voir les propriétés de la cellule
OriginalL'auteur Micky